簡體   English   中英

AlarmManager不會觸發我的服務

[英]AlarmManager doesn't trigger to my service

我將我的AlarmManager設置如下:

Intent startIntent =  new Intent(context, MyService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, startIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 3000, pendingIntent);
Log.d(TAG, "Current time is " + System.currentTimeMillis());
Log.d(TAG, "Next alarm time is: " + (alarmManager.getNextAlarmClock().getTriggerTime() - System.currentTimeMillis()));

表明
當前時間是1499909678520
下一個鬧鍾時間是:55521479

我以為使用System.currentTimeMillis()的RTC是UTC時間。 下一個警報應該小於3000嗎?

僅供參考,在我的服務中,我會這樣處理:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
  Log.i(TAG, "MyService started");
}

我的服務永遠不會開始。 怎么了

要重復使用鬧鍾:

// Alarm time :: Current time
Calendar calendar = Calendar.getInstance() ;
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 0);

// Interval
long interval = 3000; // 3 seconds

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), interval, pendingIntent);

代替:

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 3000, pendingIntent);

確保已在AndroidManifest.xml聲明了MyService

我在顯示日志時犯了一個愚蠢的錯誤。 因此,我的代碼實際上有效。 但是,我猜想alarmManager.getNextAlarmClock()。getTriggerTime()不會以UTC返回,這會導致System.currentTimeMills()有所不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM