[英]Android set repeating alarm for certain time of day
我正在嘗試設置一個重復警報,該警報將每分鍾但僅在8:00和22:00之間下載文件。 我覺得我真的很接近,但看不到我在犯的錯誤。 當前,廣播接收機未激活。 如果將重復警報手動設置為alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+ 10000,60000,pendingIntent); 它工作正常。 任何指導將不勝感激。
protected void scheduleNextUpdate()
{
Intent intent = new Intent("TEST");
PendingIntent pendingIntent =
PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
int updateInterval = 1;
long nextUpdate =(60000 * updateInterval);
long currentTimeMillis = System.currentTimeMillis();
long nextUpdateTimeMillis = currentTimeMillis + nextUpdate;
Time nextUpdateTime = new Time();
nextUpdateTime.set(nextUpdateTimeMillis);
if (nextUpdateTime.hour < 8 || nextUpdateTime.hour > 22)
{
nextUpdateTime.hour = 8;
nextUpdateTime.minute = 0;
nextUpdateTime.second = 0;
nextUpdateTimeMillis = nextUpdateTime.toMillis(false) + DateUtils.DAY_IN_MILLIS;
}
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+10000, nextUpdateTimeMillis,pendingIntent);
boolean alarmUp = (PendingIntent.getBroadcast(this, 0,
new Intent("TEST"),
PendingIntent.FLAG_NO_CREATE) != null);
if (alarmUp)
{
Log.d("myTag", "Alarm is already active");
}
}
您應該將鬧鍾設置為在8:00和22:00之間恢復,就像您提到的那樣:
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+10000, 60000,pendingIntent);
這將每分鍾重復一次。 但是您必須明確取消警報。 您可以在下載完成后取消它,方法是檢查它是否已經22:00。 或者在22:00觸發另一個警報。 否則它不會停止。
使用alarmManager.cancel (pendingIntent)
在此處進行說明: http : //developer.android.com/reference/android/app/AlarmManager.html#cancel(android.app.PendingIntent
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.