我有以下内容
BroadcastReceiver
:
public class LocationUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
LocationHelper locationHelper = new LocationHelper(context);
locationHelper.updateLocation();
//.. do stuff with location
}
public static void SetAlarm(Context context, Long time){
Intent intentAlarm = new Intent(context, LocationUpdateReceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(context, 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), time, pi);
}
public static void CancelAlarm(Context context) {
Intent intent = new Intent(context, LocationUpdateReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
我像这样调用setAlarm方法来测试活动:
LocationUpdateReceiver(位置更新接收器)。设置警报(此,3000L);
你会注意到我打电话
setRepeating()
我以为应该每3秒钟调用一次接收器类?
问题是,通常情况下,它在超过5分钟的时间内没有呼叫接收器,这是一个很大的偏差。我打算每30分钟运行一次接收器,但我是否应该期望偏差时间的相对百分比?
我如何才能确保它会被精确地(或以非常小的偏差)调用到我指定的间隔?