2016-04-17 117 views
-3

虽然这个问题在这里反复重复,但是没有解决方案正在工作,在下面的代码中它应该在启动我的活动10秒后第一次触发,但它立即启动。而且我正在使用FLAG_UPDATE_CURRENT,所以没有过去的时间可以立即启动,因为我没有按特定小时/分钟/秒进行设置。请你把我的注意力集中到我失踪的事情上。我的AlarmManager立即触发报警

我测试在Android 5.0靶向API 4.0+

  • compileSdkVersion 23
  • 的minSdkVersion 16
  • targetSdkVersion 23

    Intent myIntent = new Intent(this, check.class); 
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    

    am.setRepeating(AlarmManager.RTC,万,(AlarmManager.INTERVAL_DAY/8),pi);

这是我在AndroidManifest.xml

<receiver 
     android:name=".Check" 
     android:exported="false" /> 
+0

认真的人谁加了-1的问题,为什么?你知道答案吗?然后分享它,我解释说我在这里寻找答案,他们不工作,投票不是你玩的玩具,只是因为你可以。 –

回答

7

上实时时钟10000 check.class总是要在过去,所以你立即报警火灾。您需要System.currentTimeMillis() + 10000作为setRepeating()调用中的第二个参数。

我想指出的是setRepeating()与KitKat不一样,所以报警触发的实际时间可能会关闭。如果重要,请使用setExact()方法,每次触发时再次将闹钟设置为所需的时间间隔。

+2

谢谢Mike的解释,尤其是第二部分/编辑,这是我认为(在对同一问题应用其他解决方案期间)System.currentTimeMillis()将被添加到10000到第一个触发器的原因。再次感谢你,是的,这不是确切的,但它会做检查的目的。 –