Использование Android 19 +
setExact в соединении с WakefulBroadcastReceiver иногда не срабатывает вовремя (может быть несколько секунд или так поздно). Я имею в виду большую часть времени. вероятно, 49 раз из 50 правильных.
Я не уверен, что это только потому, что система занята в то время и не может обрабатывать рабочую нагрузку или что
Вот как я устанавливаю будильник:
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(AlarmReceiver.INTENT_FILTER);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, MyApplication.ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, timeToWakeUp, alarmIntent);
Вот мой код приемника:
public class AlarmReceiver extends WakefulBroadcastReceiver {
public static final String INTENT_FILTER = "myfilter";
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, MyWakefulService.class);
startWakefulService(context, service);
}
}
И в программе WakefulService
public class MyWakefulService extends IntentService {
....
@Override
protected void onHandleIntent(Intent intent) {
....