RemoteView——PendingIntent相关

  PendingIntent表示一种处于pending状态的意图,即表示将会有一个意图(Intent)在某一个特定的时刻或条件下发生。主要应用在Notification和RemoteView中。在通知中,其用于为通知添加单击事件,而在RemoteView中也是类似的,用于为RemoteView中的控件添加单击监听。

  PendingIntent通过send和cancel方法来发送和取消特定的Intent。

  Pending支持三种待定的意图,即启动活动,启动服务和发送广播。分别对应PendingIntent的geiActivity、getService、getBroadcast方法。三个方法共有四个参数,分别为context、requestCode、intent、flags。

  requestCode为请求码,一般为0,其会影响flags的作用。flags为标志位,常用的有:

  FLAG_ONE_SHOT  当前描述的PendingIntent只是使用一次,其后将被自动cancel。

  FLAG_NO_CREATE  PendingIntent将不会自动创建,若之前不存在,则直接返回null。

  FLAG_CANCEL_CURRENT  若PendingIntent已经存在,则cancel旧对象,重新创建新的对象。

  FLAG_UPDATE_CURRENT  若存在,则更新对象。

  

  要理解上述标志位,必须先理解PendingIntent什么时候会被认为是相同的。当Intent相同并且requestCode相同时,认为两对象匹配。则以上标志位则较好理解。

  对于FLAG_ONE_SHOT 其后续通知将与其保持一致,包括Intent的extra,并且相同的通知只可打开一次。

  对于FLAG_CANCEL_CURRENT 只有最新通知会被打开

  对于FLAG_UPDATE_CURRENT  之前已发送的通知将会更新与之保持一致,并且所有通知均可打开。

posted on 2017-03-29 18:36  AndroidLu  阅读(378)  评论(0)    收藏  举报

导航