我的AlarmManager立即触发警报

时间:2016-04-17 10:41:27

标签: android alarmmanager

虽然这个问题在SO上一遍又一遍地重复,但是没有解决方案正常工作,在下面的代码中,它应该在启动我的活动10秒后第一次触发,但它会立即启动。我正在使用FLAG_UPDATE_CURRENT,所以没有过去的时间立即开火,因为我没有按特定的小时/分钟/秒设置它。你能不能把我的注意力集中在我所缺少的地方。

我正在测试Android 5.0 Targeting 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,10000,(AlarmManager.INTERVAL_DAY / 8),pi);

这是我在AndroidManifest.xml中的check.class

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

1 个答案:

答案 0 :(得分:7)

实时时钟上的

10000总是在过去,因此您的警报会立即触发。您希望System.currentTimeMillis() + 10000作为setRepeating()调用中的第二个参数。

我想指出setRepeating()从KitKat开始是不精确的,因此警报触发的实际时间可能会关闭。如果重要,请改用setExact()方法,每次发生时再次设置警报所需的时间间隔。