Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> PendingIntent原理

PendingIntent原理

編輯:關於Android編程

在Android開發中,很多地方都要用到PendingIntent,比如Alarm。顧名思義,PendingInten並不是Intent,而是對Intent包裝,然後在後續某個時間執行intent。 PendingIntent用於描述Intent及其最終的行為.  你可以通過getActivity(Context context, int requestCode, Intent intent, int flags)系列方法從系統取得一個用於啟動一個Activity的PendingIntent對象, 可以通過getService(Context context, int requestCode, Intent intent, int flags)方法從系統取得一個用於啟動一個Service的PendingIntent對象 可以通過getBroadcast(Context context, int requestCode, Intent intent, int flags)方法從系統取得一個用於向BroadcastReceiver的Intent廣播的PendingIntent對象 返回的PendingIntent可以遞交給別的應用程序,然後繼續處理。這裡的話你可以稍後才處理PendingIntent中描述的Intent及其最終行為。 當你把PendingIntent遞交給別的程序進行處理時,PendingIntent仍然擁有PendingIntent原程序所擁有的權限(with the same permissions and identity).當你從系統取得一個PendingIntent時,一定要非常小心才行。比如,通常,如果Intent目的地是你自己的component(Activity/Service/BroadcastReceiver)的話,你最好采用在Intent中顯示指定目的component名字的方式,以確保Intent最終能發到目的,否則Intent最後可能不知道發到哪裡了。一個PendingIntent就是Android系統中的一個token(節點,這個應該是Linux或C\C++用語)的一個對象引用,它描述了一些將用於retrieve的數據(這裡,這些數據描述了Intent及其最終的行為)。 這就意味著即使PendingIntent原進程結束了的話, PendingIntent本身仍然還存在,可在其他進程(PendingIntent被遞交到的其他程序)中繼續使用.如果我在從系統中提取一個PendingIntent的,而系統中有一個和你描述的PendingIntent對等的PendingInent, 那麼系統會直接返回和該PendingIntent其實是同一token的PendingIntent,而不是一個新的token和PendingIntent。然而你在從提取PendingIntent時,通過FLAG_CANCEL_CURRENT參數,讓這個老PendingIntent的先cancel()掉,這樣得到的pendingInten和其token的就是新的了。 通過FLAG_UPDATE_CURRENT參數的話,可以讓新的Intent會更新之前PendingIntent中的Intent對象數據,例如更新Intent中的Extras。另外,我們也可以在PendingIntent的原進程中調用PendingIntent的cancel ()把其從系統中移除掉。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved