Я борюсь с приложением, которое должно повторять задачу с заданным интервалом. Я хочу, чтобы он разбудил устройство, если это необходимо. Я понятия не имею, почему, но WakefulBroadcastReceiver НИКОГДА не выполняет свой метод onReceive, который должен запускаться через AlarmManager. Проблема сохраняется с обычным BroadcastReceiver. Я использую Lollipop 5.0.1 Nexus5, временные интервалы 5-20 секунд.
Вот код:
класс mypackage.MainActivity
[...]
private void startRepeatingAlarm(){
this.wbr = new SimpleWakefulBroadcastReceiver();
this.registerReceiver(wbr, new IntentFilter("mypackage.FOO_ACTION"));
Intent i = new Intent("mypackage.FOO_ACTION");
i.setClass(this, SimpleWakefulBroadcastReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1234, i, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), timeInterval, pendingIntent);
Toast.makeText(this, "Alarm set", Toast.LENGTH_SHORT).show();
}
класс mypackage.SimpleWakefulBroadcastReceiver
public class SimpleWakefulBroadcastReceiver extends WakefulBroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// This method gets NEVER called
Intent service = new Intent(context, SimpleWakefulService.class);
startWakefulService(context, service);
}}