Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android PendingIntent的深入理解

Android PendingIntent的深入理解

編輯:初級開發

Intent比較簡單,類似消息,發送給別的activity,別的activity會立即執行

我主要說說什麼是PendingIntent以及它的執行過程

以alarm service為例:
1. activity請求一個alarm一般這樣來做:
# //創建一個PendingIntent  
# Intent intent = new Intent(ALARM_ALERT_ACTION);  
# intent.putExtra(ID, id);  
# intent.putExtra(TIME, atTimeInMillis);  
# PendingIntent sender = PendingIntent.getBroadcast(  
#                 context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);  
# //獲得AlarmMnager並注冊一個新鬧鈴,  
# //一次性鬧鈴的設置  
#   
# AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);  
# am.set(AlarmManager.POWER_OFF_WAKEUP, atTimeInMillis, sender);  
2. AlarmManager.set調用AlarmManagerService.set
3. AlarmManagerService.set的核心代碼如下:
  032425cvqy8c5kqmifveqi.JPG
我們可以看到它就是把PendingIntent保存起來而已
4. alarm manager service會定時查看是否有alarm到期了,如果到期了做相應處理。
5. AlarmThread會調用
alarm.Operation.send(mContext, 0,
                                    mBackgroundIntent.putExtra(
                                            Intent.EXTRA_ALARM_COUNT, alarm.count),
                                    mResultReceiver, mHandler);
也就是通過PendingIntent.send執行intent操作,alarm這個就會發送ALARM_ALERT_ACTION的broadcast。                           

補充說明:
1. PendingIntent重要特點是異步處理。
2. 另外有一個要說明的是PendingIntent.onFinished,它可以作為PendingIntent.send的一個參數,
我們知道PendingIntent.send一般是在service中執行,這個調用的send後,回調onFished類的onSendFinished,所以onSendFinished一般也是在service中執行的
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved