我使用AlarmManager
这种方式设置了重复警报:
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmMgr.setRepeating (AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 100, 10000, mPendingIntent);
registerReceiver(new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
sharedPrefsEditor.putString(TIMER_LOG_KEY, sharedPrefs.getString(TIMER_LOG_KEY, "") + Calendar.getInstance().getTimeInMillis() + "|");
sharedPrefsEditor.commit();
}
},
new IntentFilter(ALARM_TEST_TIMER_ACTION));
mPendingIntent
发送广播。
警报应该每 10 秒(= 10,000 毫秒)执行一次。
我记录了执行时间,发现了 2 个异常间隔:23 秒和 143 秒。
我不得不提到所有其他的时间间隔都很好(最多 11.1 秒)。
为什么会这样?如何避免这些异常?