我的 AlarmManager 立即触发警报
My AlarmManager fires the alarm immediately
虽然这个问题在 SO 上一遍又一遍地重复,但没有一个解决方案有效,在下面的代码中它应该在启动我的 activity 后 10 秒后第一次触发,但是它立即启动。我正在使用 FLAG_UPDATE_CURRENT,所以没有过去的时间立即触发,因为我没有将它设置为特定的 hour/minute/sec。能否请你提醒我注意我遗漏了什么。
我正在测试 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, 10000, (AlarmManager.INTERVAL_DAY / 8), 圆周率);
这是我在AndroidManifest.xml
中的check.class
<receiver
android:name=".Check"
android:exported="false" />
10000
实时时钟上的时间总是过去,因此您的闹钟会立即响起。您希望 System.currentTimeMillis() + 10000
作为 setRepeating()
调用中的第二个参数。
我要指出 setRepeating()
与 KitKat 不准确,因此警报触发的实际时间可能已关闭。如果重要,请改用 setExact()
方法,在每次触发时为所需的时间间隔再次设置警报。
虽然这个问题在 SO 上一遍又一遍地重复,但没有一个解决方案有效,在下面的代码中它应该在启动我的 activity 后 10 秒后第一次触发,但是它立即启动。我正在使用 FLAG_UPDATE_CURRENT,所以没有过去的时间立即触发,因为我没有将它设置为特定的 hour/minute/sec。能否请你提醒我注意我遗漏了什么。
我正在测试 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, 10000, (AlarmManager.INTERVAL_DAY / 8), 圆周率);
这是我在AndroidManifest.xml
中的check.class <receiver
android:name=".Check"
android:exported="false" />
10000
实时时钟上的时间总是过去,因此您的闹钟会立即响起。您希望 System.currentTimeMillis() + 10000
作为 setRepeating()
调用中的第二个参数。
我要指出 setRepeating()
与 KitKat 不准确,因此警报触发的实际时间可能已关闭。如果重要,请改用 setExact()
方法,在每次触发时为所需的时间间隔再次设置警报。