首先,我很抱歉我的英语。 我正在使用alarmManager,但我有一个问题。
PendingIntent pendingIntent;
AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE);
pendingIntent = PendingIntent.getService(context,0,intent,0);
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime(), 60 * 1000, pendingIntent);`
我正在使用此代码启动每分钟重复的警报。第一次运行的警报运行完美,但一段时间后重复时间变为5分钟,并以此方式继续运行。什么可能导致这种情况?
答案 0 :(得分:0)
您可以使用方法setInExactRepeating来节省电池电量,但该方法并不像它所说的那样精确。在AlarmManager的文档中:"从API 19开始,所有重复的警报都将是不精确的,并且无论其规定的重复间隔如何,都可以与其他警报进行批处理。"这也是我使用AlarmManager setInExactRepeating方法的经验。
如果您需要准确时间,请使用AlarmManager方法 setRepeating :
setRepeating (int type, long triggerAtMillis, long intervalMillis, PendingIntent operation);
type :ELAPSED_REALTIME,ELAPSED_REALTIME_WAKEUP,RTC或RTC_WAKEUP之一。
triggerAtMillis :使用适当的时钟(取决于闹钟类型),闹钟应首先关闭的时间(以毫秒为单位)。
intervalMillis :后续重复警报之间的间隔(以毫秒为单位)。
操作:警报响起时执行的操作;通常来自 IntentSender.getBroadcast()。
如果需要,您可以在此处找到更多信息:http://developer.android.com/reference/android/app/AlarmManager.html