搜尋此網誌

2014年10月10日 星期五

【Android】PendingIntent介紹和用法


  • Intent 是及時啟動的,intent隨activity消失而消失;PendingIntent可以看作是對intent的包裝。
  •  Intent 一般是用來作Activity、 Service、BroadcastReceiver之間傳遞數據,而Pendingintent,一般用在Notification上,可以理解為延遲執行的intent。


  • 簡單來說,Intent指定好要幹嘛後,就去做了。而PedingIntent則是先把某個Intent包好,丟給某個程式,以後再去執行Intent要幹嘛。比如用startActivity(intent)就會直接去啟動和intent關聯的某個程式了。相對的,假設APK1想告訴APK2在某個情況 下,去執行APK3的話,就可以在APK1設定好PendingIntent(內容就是去執行APK3),然後丟過去給APK2,然後APK2在某種情況 下,就去執行PendingIntent,那就會等於執行APK3。這裡不單單是指startActivity,也可以是對Broadcast和 Service進行處理。

  • 那為何不直接在APK2就用startActivity(Intent)寫好要執行 APK3,不就不用丟PendingIntent了?因為APK2要「動態」決定開啟,不同情況下要執行那一支APK,所以不能先寫死。假設使用 startActivity的情況下,如果有A1、B1、C1三支程式都要APK2去執行不同程式,分別為A3,B3和C3,那不就變成APK2的程式要 寫上startActivity(A3)、startActivity(B3)、startActivity(C3)。假設未來還會有新的D3、E3…會 被執行的話,APK2的程式碼,不就無法要不停的調整了。所以利用PendingIntent就可以解決這個問題。
以上節錄自:
http://developer.android.com/reference/android/app/PendingIntent.html
http://sunzone.iteye.com/blog/1998091
http://androidgill.blogspot.tw/2011/12/pendingintent1.html

沒有留言: