2011年9月11日 星期日

[Android] Intent and PendingIntent

[Intent]
  • 是即時的,隨著其所在的 activity 消失而消失。
  • 提供 component 互相調用時的所需資訊,算是 caller 和 callee 間的橋樑 (?)。


[PendingIntent]
  • 用於處理即將發生的事,例如在 notificationManager 跳轉頁面,但不是馬上跳轉。
  • 包含了 Intent 的描述又是 Intent 行為的執行,如果將 Intent 比作成一個訂單的話,PendingIntent 像是一個下訂單的人,因为它既要負責將訂單發出去,也要負責訂單發送的處理,比如發送成功後要準備驗收訂定貨物,發送失敗後要重發送或是取消訂單等操作。
  • 主要包含的內容是要執行的 intent 和當時 component 的 context,可以看做是對 intent 再做包裝的結果。
  • 當前的 activity 並不能馬上使用 pendingIntent 所包含的 intent,而是在外部執行 pendingIntent 時,才去使用其中的intent,可以脫離 app 而存在。
  • 有就是 pendingIntent 中會保存前個 context of component (ex: A),讓後來調用的此 pendingIntent 的 component (ex: B),可以如在 A 中執行的使用此 pendingIntent 中的 intent,所以即使 A 已不存在,還是能透過保存在 pendingIntent 中的 context 執行 intent。
  • 可透過getActivity(), getBroadcast(), getService() 得到。
  • ex: 常使用在 alertManager and notificationManager。



* Reference
- Intent和PendingIntent的区别详细分析 | 无锋网
- 深入学习android之AlarmManager - Java-Jinguo - ITeye技术网站
- Android Intent学习 | 好你 - 你好,Google Android 2.2学习笔记

沒有留言:

張貼留言