本人为android的新手,如果有写的不对的地方,希望各路大神多多指教哈。。。
我们经常遇见的Noticication的例子,莫过于使用qq时,手机状态栏会显示有多少条消息处于未读状态。Notification类就是实现这样的功能。
Notification通知的布局有两种:
1.使用系统默认的布局
2.使用自定义的布局
首先使用系统默认布局:
1.首先获取NotificationManager对象。NotificationManager是系统提供的服务
2.创建Notification类对象
Notification notification = new Notification.Builder(MainActivity.this) //1 .setAutoCancel(true) //2 .setTicker("新消息...") //3 .setSmallIcon(R.drawable.notificationsmall) //4 //5 .setContentTitle("笑递消息") //5 .setContentText("笑递笑递内容") //6 .setContentIntent(pendingIntent) //7 .setNumber(i) //8 .setLargeIcon(bitmap) //9 .setWhen(System.currentTimeMillis()) //10 .build(); //11根据上图中的每一行后面的数字匹配
对应上面的3
这里的3是对应设置的数据,注解第八行,3上面的就是第10行的setWhen
相应的解释:
2.设置可以在下拉状态栏中通过滑动取消通知
4.设置小图标一定要有
7.设置在下拉状态栏点击通知后跳转到相应的界面
这里使用的是PendingIntent.
下面解释一下PendingIntent 和Intent的区别
Intent和PendingIntent的区别,PendingIntent可以看做是对Intent的包装,通过名称可以看出PendingIntent用于处理即将发生的意图,而Intent用来处理马上发生的意图。而对于通知来说,它是一个系统级的全局的通知,并不确定这个意图被执行的时间。当在应用外部执行PendingIntent时,因为它保存了触发App的Context,使得外部App可以如果当前App一样执行PendingIntent里的Intent,就算执行时触发通知的App已经不存在了,也能通过存在PendingIntent里的Context照常执行Intent,并且还可以处理Intent所带来的额外的信息。
PendingIntent提供了多个静态的getXxx()方法,用于获得适用于不同场景的PendingIntent对象。一般需要传递的几个参数都很常规,只介绍一个flag参数,用于标识PendingIntent的构造选择:
FLAG_CANCEL_CURRENT:如果构建的PendingIntent已经存在,则取消前一个,重新构建一个。
FLAG_NO_CREATE:如果前一个PendingIntent已经不存在了,将不再构建它。
FLAG_ONE_SHOT:表明这里构建的PendingIntent只能使用一次。
FLAG_UPDATE_CURRENT:如果构建的PendingIntent已经存在,则替换它,常用。
下面说明如何构建PendingIntent对象: