2011-09-08 498 views

回答

7

您可以使用日曆並將其設置爲您想要的適當時間。那麼你會做cal.getTimeInMillis(),並使用triggerAtTime,間隔將是24 * 60 * 60 * 1000 = 86,400,000

你也必須確保你有一個BroadcastReceiver引導完成,所以如果手機關閉電源再重新開啓,你可以重新安排報警:

而設備是睡着了

已註冊的警報被保留(可以 可選喚醒設備,如果他們在這段時間內熄滅),但 將被清除,如果它被關閉並重新啓動。

對於啓動,您可以使用意圖過濾"android.intent.action.BOOT_COMPLETED",你必須持有允許"android.permission.RECEIVE_BOOT_COMPLETED",以防萬一你需要的信息。

爲了您的方便,這裏有幾個鏈接。 的日曆頁:

http://developer.android.com/reference/java/util/Calendar.html

在頁面上AlarmManager:

http://developer.android.com/reference/android/app/AlarmManager.html

So how would that look inside AlarmManager.setRepeating()? 

這裏是方法:

setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation) 

我猜類型,你會想要你SE ELAPSED_REALTIME,然後讓triggerAtTime,你會得到一個日曆(稱之爲CAL)匹配上午8:00明天早上,然後做

triggerAtTime = cal.getTimeInMillis()-Calendar.getInstance().getTimeInMillis() 

那麼這將是

alarmMan.setRepeating(AlarmManager.ELAPSED_REALTIME, triggerAtTime, 86400000, pendingIntent); 

而且我不「知道究竟如何使用日曆在8:00 AM得到明天,但我想你會做cal.getInstance(),然後cal.add(Calendar.DAY, 1)然後cal.set(Calendar.HOUR_OF_DAY, 8)

http://developer.android.com/reference/java/util/Calendar.html

我很少使用日曆,所以我可能有一些錯誤,你可能需要玩一點,但這基本上是需要做的。將來,如果你只是閱讀DOC並玩一些,你通常可以弄清楚。

+0

那麼怎麼會看到裏面AlarmManager.setRepeating()? –