调整重复,一分钟警报管理员变为5分钟

时间:2015-12-28 22:47:26

标签: android android-intent alarmmanager android-pendingintent

首先,我很抱歉我的英语。 我正在使用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分钟,并以此方式继续运行。什么可能导致这种情况?

1 个答案:

答案 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