AlarmManager 包含的主要方法:
// 取消已經注冊的與參數匹配的定時器
void cancel(PendingIntent operation)
//注冊一個新的延遲定時器
void set(int type, long triggerAtTime, PendingIntent operation)
//注冊一個重復類型的定時器
void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
//注冊一個非精密的重復類型定時器
void setInexactRepeating (int type, long triggerAtTime, long interval, PendingIntent operation)
//設置時區
void setTimeZone(String timeZone)
定時器主要類型:
public static final int ELAPSED_REALTIME
// 當系統進入睡眠狀態時,這種類型的鬧鈴不會喚醒系統。直到系統下次被喚醒才傳遞它,該鬧鈴所用的時間是相對時間,是從系統啟動后開始計時的,包括睡眠時 間,可以通過調用SystemClock.elapsedRealtime()獲得。系統值是3 (0x00000003)。
public static final int ELAPSED_REALTIME_WAKEUP
//能喚醒系統,用法同ELAPSED_REALTIME,系統值是2 (0x00000002) 。
public static final int RTC
//當系統進入睡眠狀態時,這種類型的鬧鈴不會喚醒系統。直到系統下次被喚醒才傳遞它,該鬧鈴所用的時間是絕對時間,所用時間是UTC時間,可以通過調用 System.currentTimeMillis()獲得。系統值是1 (0x00000001) 。
public static final int RTC_WAKEUP
//能喚醒系統,用法同RTC類型,系統值為 0 (0x00000000) 。
Public static final int POWER_OFF_WAKEUP
//能喚醒系統,它是一種關機鬧鈴,就是說設備在關機狀態下也可以喚醒系統,所以我們把它稱之為關機鬧鈴。使用方法同RTC類型,系統值為4(0x00000004)。
AlarmManager 生命周期:
repeating AlarmManager一旦啟動就會一直在后台運行(除非執行cancel方法),可以在“應用管理”中看到這個應用狀態是正在運行。 “強行停止”可以讓Alarmmanager停掉。
嘗試了幾種任務管理器, 都只能重置計數器(確實釋放內存了),但都無法關閉定時器,只有系統自帶的“強行停止”奏效。
使用實例如下鏈接: