2011-09-08 593 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()? –

相关问题