正如你建議我使用AlarmManager而不是Timer,我想程序會運行。
但不幸的是,它沒有。或者,更好的,並不總是...AlarmManager不能按預期運行
這是我的代碼:
long millis = 0;
this.alarmMgr = (AlarmManager)this.main.getSystemService(Context.ALARM_SERVICE);
this.checkPendingIntent = PendingIntent.getBroadcast(this.main, 0,
new Intent(this.main, AlarmReceiver.class), 0);
if(frequency.compareTo("1HOUR") == 0)
millis = 3600 * 1000;
if(frequency.compareTo("12HOUR") == 0)
millis = 12 * 3600 * 1000;
if(frequency.compareTo("1DAY") == 0)
millis = 24 * 3600 * 1000;
if(frequency.compareTo("1WEEK") == 0)
millis = 7 * 24 * 3600 * 1000;
this.alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), millis, this.checkPendingIntent);
我期待的是,懸而未決的意圖(AlarmReceiver)都會被調用x毫秒,但事實並非如此。
我可以在手機的日誌中看到它不會被調用,並且在我的服務器日誌中(接收方發送HTTP請求),沒有收到請求。很奇怪的是,有時它運行,但我不能再現這種情況。
有人可以說我做錯了什麼嗎?
非常感謝
盧卡Bertoncello
謝謝,我會嘗試。你能解釋一下爲什麼你使用setTimeInMillis作爲日曆,然後再使用calendar.set? – 2013-04-27 07:13:30
好吧,它似乎工作...我會測試你的例子今天和明天,期待每小時一個請求。非常感謝 – 2013-04-27 10:32:08
@LucaBertoncello您可以設置鬧鐘,然後更改設置的時間。當警報到來時,警報將被解除。如果您發現我的回答有用,請將它投票並接受爲答案 – 2013-04-28 04:39:05