前面学习service的时候,完整地学习了activity,serice,broadcast的一套体系,其中有使用到通知栏,所以就去学习了通知栏的使用,做下笔记,记录一些使用的要点。
builder=new NotificationCompat.Builder(this);
nm=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
ntf=builder.build();
获取到通知管理器,和通知builder,管理器是用来发送同时和删除通知,builder用来设置通知记录的一些属性。ntf是创建完成的一个通知。通知有个flags属性,这个是控制通知的存在方式。不为这个属性设置任何参数,通知就必须在程序中让管理器主动调用cancle方法才能退出,无法通过用户点击和清除通知。
flags有以下几个可选属性:
Notification.FLAG_AUTO_CANCEL;//用户点击退出
Notification.FLAG_INSISTENT;//一直发送提示信息(如震动),直到打开通知栏
Notification.FLAG_NO_CLEAR;//用户不能通过点击清除删除这个通知
Notification.FLAG_ONGOING_EVENT;//一个正在进行的任务事件,如打电话
如果点击通知后要进行一些操作,比如跳转,或者打开一些程序时,需要通过setcontentintent方法来设置。
注:使用自定义布局时,使用RemoteViews.,然后对布局进行修改是用remoteviews对象通过一些方法来修改,方法中都有一个参数就是控件id,如:
views.setTextViewText(R.id.start, "test");
每次修改了通知栏的一些信息后,用builder再次build一次,然后让管理器再次发送一次通知,记得id一定要相同,如果是修改已发送过了的通知。
为了避免使用卡顿,不能过于频繁地更新界面,比如进度条,最好是设置一定的时间间隔更新。