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 之前已发送的通知将会更新与之保持一致,并且所有通知均可打开。
浙公网安备 33010602011771号