虽然这个问题在SO上一遍又一遍地重复,但是没有解决方案正常工作,在下面的代码中,它应该在启动我的活动10秒后第一次触发,但它会立即启动。我正在使用FLAG_UPDATE_CURRENT,所以没有过去的时间立即开火,因为我没有按特定的小时/分钟/秒设置它。你能不能把我的注意力集中在我所缺少的地方。
我正在测试Android 5.0 Targeting API 4.0 +
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" />
答案 0 :(得分:7)
10000
总是在过去,因此您的警报会立即触发。您希望System.currentTimeMillis() + 10000
作为setRepeating()
调用中的第二个参数。
我想指出setRepeating()
从KitKat开始是不精确的,因此警报触发的实际时间可能会关闭。如果重要,请改用setExact()
方法,每次发生时再次设置警报所需的时间间隔。