PendingIntent的基本理解

PendingIntent可以看作是對Intent的一個封裝,但它不是立刻執行某個行爲,而是滿足某些條件或觸發某些事件後才執行指定的行爲(啓動特定Service,Activity,BrcastReceive)。

我們可以把Pending Intent交給其他程序,其他程序按照PendingIntent進行操作。

Alarm定時器與Notification通知中都使用了PendingIntent

1.獲得PendingIntent類內部靜態方法獲得PendingIntent實例:

//獲得一個用於啓動特定Activity的PendingIntent

public static PendingIntent getActivity(Context context, int requestCode,Intent intent, int flags)

//獲得一個用於啓動特定Service的PendingIntent

public static PendingIntent getService(Context context, int requestCode,Intent intent, int flags)

//獲得一個用於發送特定Broadcast的PendingIntent

public static PendingIntent getBroadcast(Context context, int requestCode,Intent intent, int flags)

參數說明:

context:上下文對象。

requstCode:請求碼,發件人的私人請求代碼(當前未使用)。

intent:請求意圖。用於要指明要啓動的類以及數據的傳遞;

flags:這是一個關鍵的標誌位:

主要常量

FLAG_CANCEL_CURRENT:如果當前系統中已經存在一個相同的PendingIntent對象,那麼就將先將已有的PendingIntent取消,然後重新生成一個PendingIntent對象。

FLAG_NO_CREATE:如果當前系統中不存在相同的PendingIntent對象,系統將不會創建該PendingIntent對象而是直接返回null。

FLAG_ONE_SHOT:該PendingIntent只作用一次。在該PendingIntent對象通過send()方法觸發過後,PendingIntent將自動調用cancel()進行銷燬,那麼如果你再調用send()方法的話,系統將會返回一個SendIntentException。

FLAG_UPDATE_CURRENT:如果系統中有一個和你描述的PendingIntent對等的PendingInent,那麼系統將使用該PendingIntent對象,但是會使用新的Intent來更新之前PendingIntent中的Intent對象數據,例如更新Intent中的Extras。

注意:兩個PendingIntent對等是指它們的operation一樣, 且其它們的Intent的action, data, categories, components和flags都一樣。但是它們的Intent的Extra可以不一樣。

轉載自:https://www.jianshu.com/p/a37f0ce2da2e

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章