Android AlarmManager的一些問題

AlarmManager的問題: app

我開始的代碼是這樣寫的 學習

Java代碼  
  1. alarmManager.set(AlarmManager.RTC_WAKEUP, 60*1000, pendingIntent);
個人本意是設定一分鐘後啓動pendingIntent 可是每次都是我設置完鬧鐘以後立馬就啓動了。

後來我發現問題出在第二個參數上 我對他的理解是錯誤的 spa

type
One of ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP}, RTC or RTC_WAKEUP.

 

triggerAtTime
Time the alarm should first go off, using the appropriate clock (depending on the alarm type).

 

我以前覺得它是「延遲」時間,而實際它是「啓動」時間。 orm

要理解這個參數還要看type這個參數 對象

Java代碼  
  1. public static final int ELAPSED_REALTIME  
  2.         // 當系統進入睡眠狀態時,這種類型的鬧鈴不會喚醒系統。直到系統下次被喚醒才傳遞它,該鬧鈴所用的時間是相對時間,是從系統啓動後開始計時的,包括睡眠時 間,能夠經過調用SystemClock.elapsedRealtime()得到。系統值是3    (0x00000003)。  
  3.   
  4.         public static final int ELAPSED_REALTIME_WAKEUP  
  5.         //能喚醒系統,用法同ELAPSED_REALTIME,系統值是2 (0x00000002) 。  
  6.   
  7.         public static final int RTC  
  8.         //當系統進入睡眠狀態時,這種類型的鬧鈴不會喚醒系統。直到系統下次被喚醒才傳遞它,該鬧鈴所用的時間是絕對時間,所用時間是UTC時間,能夠經過調用 System.currentTimeMillis()得到。系統值是1 (0x00000001) 。  
  9.         public static final int RTC_WAKEUP  
  10.         //能喚醒系統,用法同RTC類型,系統值爲 0 (0x00000000) 。  

它大體分爲兩種類型 一種是相對時間 一種是絕對時間 get

因此,根據使用的類型不一樣 triggerAtTime設置也有所不一樣 it

若是使用ELAPSED_REALTIME_WAKEUP類型 應該調用SystemClock.elapsedRealtime()獲取相對時間在加上你設定的延遲時間 io

Java代碼  
  1. alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5000, sender);  

若是使用RTC_WAKEUP類型 應該調用System.currentTimeMillis()獲取從1970.1.1號以來的時間在加上你設定的延遲時間 table

Java代碼  
  1. alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5000, sender);  

============================================= ast

setRepeating方法有4個參數,這些參數的含義以下:

type: 表示警報類型,通常能夠取的值是AlarmManager.RTCAlarmManager.RTC_WAKEUP。若是將type參數值設爲 AlarmManager.RTC,表示是一個正常的定時器,若是將type參數值設爲AlarmManager.RTC_WAKEUP,除了有定時器的 功能外,還會發出警報聲(例如,響鈴、震動)。

triggerAtTime:第1次運行時要等待的時間,也就是執行延遲時間,單位是毫秒。

interval:表示執行的時間間隔,單位是毫秒。

operation: 一個PendingIntent對象,表示到時間後要執行的操做。PendingIntent與Intent相似,能夠封裝Activity、 BroadcastReceiver和Service。但與Intent不一樣的是,PendingIntent能夠脫離應用程序而存在。

最近看到大神的一篇文章。學習學習……

相關文章
相關標籤/搜索