AlarmManager mgr=
(AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(ctxt, AlarmReceiver.class);
PendingIntent pi=PendingIntent.getBroadcast(ctxt, 0, i, 0);
mgr.setRepeating(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
System.currentTimeMillis() + 1000,
1000, pi);
根据android doc
triggerAtMill使用适当的时钟(取决于警报类型),警报首先应该以毫秒为单位的时间。
动作应该在1秒后开始,但它永远不会被调用,为什么?
答案 0 :(得分:8)
而不是setRepeating()方法中的AlarmManager.ELAPSED_REALTIME_WAKEUP
,请使用下面的AlarmManager.RTC_WAKEUP
,
mgr.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + 1000, 1000, pi);
答案 1 :(得分:4)
我谷歌相当多但似乎没有人遇到同样的问题。 最后我发现我应该使用SystemClock.elapsedRealtime()。
对于triggerAtMillis,因为type是AlarmManager.ELAPSED_REALTIME_WAKEUP SystemClock.elapsedRealtime() 应该用来代替 System.currentTimeMillis的()
问题已经解决。