什么是前台服务
前台服务是那些被认为用户知道(用户认可所认可)且在系统内存不足的时候不允许系统杀死的服务。前台服务必须给状态栏提供一个通知,它被放到正在运行(Ongoing)标题之下——这就意味着通知只有在这个服务被终止或从前台主动移除通知后才能被解除。
通知
Notification支持文字内容显示、震动、三色灯、铃声等多种提示形式,在默认情况下,Notification仅显示消息标题、消息内容、送达时间这3项内容。
-
标准样式
-
扩展样式
-
自定义样式
使用notification
Notification:通知信息类,它里面对应了通知栏的各个属性。
NotificationManager : 状态栏通知的管理类,负责发通知、清除通知等操作。
构建通知的步骤:
- 获取状态通知栏管理类实例
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
- 实例化通知栏构造器NotificationCompat.Builder
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
- 对Builder进行配置
// 设置通知的基本信息:icon、标题、内容
mBuilder .setSmallIcon(R.drawable.notification_icon)
mBuilder .setContentTitle("My notification")
mBuilder .setContentText("Hello World!");
- 设置通知栏PendingIntent(点击动作事件等都包含在这里)
// 设置通知的点击行为:这里启动一个 Activity
Intent intent = new Intent(this, ResultActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder .setContentIntent(pendingIntent);
- 发送通知请求
mNotificationManager.notify(notifyId, mBuilder.build());
更新通知
要想更新通知,需要利用NotificationManager.notify()
的id参数,该id在应用内需要唯一。要想更新特定id的通知,只需要创建新的Notification,并发出与之前所用 id 相同的 Notification。如果之前的通知仍然可见,则系统会根据新的 Notification 对象的内容更新该通知。相反,如果之前的通知已被清除,系统则会创建一个新通知。
删除通知
删除通知可以有多种方式:
1.通过NotificationCompat.Builder
设置setAutoCancel(true)
,这样当用户点击通知后,通知自动删除。
2.通过NotificationManager.cancel(id)
方法,删除指定 id 的通知
3.通过 NotificationManager.cancelAll()
方法,删除该应用的所有通知
关于前台服务和通知更具体的内容可参考紫豪