2012-03-30 36 views
1

請參考 this針對我面臨的問題....正如回答我的問題的人所建議的+我的額外研究顯示的是,我需要使用AlarmManager來解決我的睡眠& TimerTask的問題......因爲,我已經開始改變現有代碼利用的PendingIntent隨着AlarmManager有:閱讀AlarmManager文檔幾次後,在服務Thread thr = new Thread(null, mTask, "ServiceName"); ...Android開發者:AlarmManager重新安排和服務

,我不知道如何重新安排一個AlarmManager ...即時通訊工作在一個配置文件切換器應用程序,這將不同的運行間隔(像我在我的問題線程描述)...

有沒有人有任何建議?

+0

目前,即時通訊正在研究創建一個一次性警報,然後一旦這個一次即將過期,用新的更新間隔創建一個新的... – 2012-03-30 20:36:03

回答

4

我不知道如何重新安排AlarmManager

使用cancel()刪除現有的報警,並使用set()或任何其他set...()方法來設定鬧鐘。要「重新安排」警報,您可以取消舊的並創建新的警報。

+0

始終在做這項工作?有時我會使用cancel併爲我的pendingIntent設置一個新的時間......它不起作用,或者在10分鐘後觸發警報 – yeahman 2016-03-11 21:12:40

0

如果您使用相同的intentString和相同的請求代碼,您的警報將被覆蓋。

在你的意圖,你可以使用以下標誌:

PendingIntent.FLAG_UPDATE_CURRENT 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, notification.getId(), new Intent(intentString), PendingIntent.FLAG_UPDATE_CURRENT); 

long startDateTimeMillis = notification.getDateTime().toDateTime().getMillis(); 

MyApplication.alarmManager().setExact(AlarmManager.RTC_WAKEUP, 
        startDateTimeMillis, 
        pendingIntent); 

相關報警本身,你可以使用的方法setExact()或設置(),你可以對他們搜索到檢查哪一個更適合你。