- 主要維護 app 所註冊的鬧鐘(在系统中,linux實現的設備名為”/dev/alarm”)。會一直監視著鬧鐘設備,一旦有鬧鐘處發或是鬧鐘事件發生,AlarmManagerServie就會從鬧鐘列表中找尋對應的鬧鐘並發出廣播。
- 系統啟動時,system_service啟動並初始化 /dev/alarm。
- 在 JAVA 層的AlarmManagerService與Linux Alarm驅動程序接口之間還是有一層封裝,那就是JNI。
- AlarmManager 與 AlarmManagerServie之間是通過Binder來通信的,他們之間是多對一(?)的關系。
* 鬧鐘類型
- public static final int ELAPSED_REALTIME
- 當系統進入睡眠狀態時不會喚醒系統,直到系统下次被唤醒才會傳遞此訊息。
- 所用的時間是相對時間,是從系统啟動後開始計算的,包括睡眠時間,可以通過 SystemClock.elapsedRealtime() 取得。
- public static final int ELAPSED_REALTIME_WAKEUP
- 當系統進入睡眠狀態時能唤醒系统,ex: 透過聲音、振動。
- public static final int RTC
- 當系统進入睡眠狀態時,不會喚醒系統,直到系统下次被唤醒才會傳遞此訊息。
- 所用的時間是絕對時間,UTC 時間,可以通過 System.currentTimeMillis() 取得。
- public static final int RTC_WAKEUP
- 會唤醒此系統,傳遞此訊息。
- Public static final int POWER_OFF_WAKEUP
- 會喚醒系統,在裝置關機的狀態下也可以喚醒系統,同RTC類型。
Related
[API] Alarm
* Reference
- 深入学习android之AlarmManager - Java-Jinguo - ITeye技术网站
- 8.3.5 全局定时器AlarmManager(1) - 51CTO.COM
沒有留言:
張貼留言