В настоящее время я занимаюсь разработкой приложения Android с использованием Android Studio. Одно из моих требований - запускать BroadcastReceiver
в точное время. Он работает отлично, пока приложение не работает в фоновом режиме. Как только приложение будет удалено из списка последних приложений, оно не будет работать. Я не знаю, есть ли проблема в диспетчере аварий или в BroadcastReceiver
.
XML:
<receiver android:name=".BackgroundServer"
android:permission="TODO"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="birthday.wallpaper.WALLPAPER_CHANGE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
И в MainActivity (Java):
Intent intent = new Intent(this,BackgroundServer.class);
PendingIntent pendingIntent = PendingIntent
.getBroadcast(getApplicationContext(), 0,intent,0);
AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
assert manager != null;
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY,
pendingIntent
);
В моем настраиваемом приемнике вещания я установил диспетчер аварийных сигналов в методе onStart
, равном MainActivity
. Это означает, что, как и аварийные сигналы, код BroadcastReceiver
должен быть выполнен.
Хорошо, он работает, когда приложение находится на переднем плане или когда приложение закрыто, но присутствует в списке последних приложений. Код не выполняется, когда я пытаюсь удалить приложение из списка последних приложений. Я не знаю, отключен ли будильник, когда я удаляю приложение из списка недавних приложений, или, возможно, Broadcast Receiver прекращает слушать трансляции.