[英]Can I set an end time for AlarmManager in Android?
我已將AlarmManager
設置為在特定時間關閉,然后每隔一段時間重復一次。 有多少時間可以停下來告訴它嗎? 甚至什么時候停止?
這是我到目前為止的內容:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 13);
calendar.set(Calendar.MINUTE, 56);
Intent intent = new Intent(this, MyService.class);
alarmIntent = PendingIntent.getService(this, 0, intent, 0);
alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
1000 * 60 * 60, alarmIntent);
另外,我是否需要做任何事情以確保它每天都能正常運行? 還是已經這樣做了?
有多少時間可以停下來告訴它嗎? 甚至什么時候停止?
無法為AlarmManager指定結束時間,但是您可以做的是,每次在廣播接收器中收到未決意圖時,請檢查是否需要取消該警報。 要取消警報,您需要調用alarmManager.cancel(pendingIntent),其中pendingIntent具有與最初用於創建警報的PendingIntent相同的requestCode。
我是否還需要做任何事情以確保它每天都可以使用?
如果您希望間隔每天觸發一次,則需要將間隔設置為:1000 * 60 * 60 * 24。
您還需要注意設備重新啟動的情況。 如果用戶重新啟動設備,警報將被清除,您需要重新創建警報。 您將需要實現另一個偵聽RECEIVE_BOOT_COMPLETED的BroadcastReceiver,並在onReceive()中添加邏輯以重新創建警報。
另外,此行也是不必要的:
calendar.setTimeInMillis(System.currentTimeMillis());
這行:
Calendar calendar = Calendar.getInstance();
已經為您提供了一個設置為精確創建時間的Calendar對象。
您還應該添加以下幾行,以確保您的鬧鍾每天恰好在13:56觸發:
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.