我的應用程序有一個AlarmManager設置爲每60秒觸發一次。它會觸發一個片段,檢查當前時間並查看應用程序日曆中是否有當前發生的事件。 它運行的很好,直到我發現它跳過其中一個事件。爲了檢查應用程序的完整性,我讓片段將當前時間(分鐘0-59)寫入文本文件,並查看它是否跳過任何內容。仔細查看連續三天錄製的文件後,我發現它確實存在。AlarmMamanger不準確
47,48,50,50,51,52,54,54,55,56,57,58,59,0,1,2,
這發生隨機的任何地方。它發生在3-4小時後。下面是另一個示例
1,1,3,4,5,6,7,7,9,9,10,11,12,13,
的AlarmManager代碼不具有任何問題似乎。儘管如果代碼在給定時間過去之前跳過了一分鐘或者觸發,那麼在某處出現了問題。 這裏是我使用的AlarmManager
long alertTime = new GregorianCalendar().getTimeInMillis();
int timeInterval = 60*1000;
Intent alertIntent = new Intent(this, AlertRec.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alertTime, timeInterval, PendingIntent.getBroadcast(this, 1, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
問題的代碼: 1)爲什麼AlarmManager作用不規則? 2)如何避免這種情況?
我可以減少間隔時間來解決這個問題嗎?我讀了60是你需要申請的最小時間間隔。
** 1 ** - 因爲您正在瞄準API級別19+。 ** 2 ** - 通過定位API級別18或根據操作系統版本使用不同的方法來設置PendingIntent/s。請查看[官方文檔](http://developer.android.com/reference/android/app/AlarmManager.html)。 –