Почему трансляция AlarmManager отменяется, когда приложение убивает?
-
27-09-2019 - |
Вопрос
Хорошо, так что у меня есть два зарегистрированных широководства. Когда приложение закрыто, они оба огонь в соответствующие времена и делают соответствующие вещи.
Если приложение закрыто, затем убит (скажем, с помощью Appkiller) приемники никогда не получают их трансляции, и ничего не происходит.
Предположительно то же самое происходит, если родительское приложение погиб из-за низкой памяти, так как я могу убедиться, что эти вещания будут выпущены / получены. API утверждает, что даже если приложение будет убито, он должен огонь, у кого-нибудь еще есть опыт работы с этой ситуацией?
Если это поможет моим манифесте:
<!-- receivers for AlarmManager -->
<receiver
android:exported="true"
android:label="Shift roster updating calendar."
android:name="com.skooter.shiftroster.backend.service.UpdateCalendar"
>
</receiver>
<receiver
android:exported="true"
android:label="Shift roster checking alarm."
android:name="com.skooter.shiftroster.backend.service.SetWakeup"
>
</receiver>
И ничего эзотерического не происходит в AlliManager / Broadcastrecevers
Решение
Предположительно то же самое происходит, если родительское приложение погиб из-за низкой памяти
Вы предполагаете неправильно. Так называемые «убийцы задач» эксплуатируют определенную API, которую не используется в условиях низкой памяти. «Killer Task» API Nukes все, включая запланированные аварийные сигналы.
Кроме того, ваше родительское приложение, надеюсь, не в памяти в первую очередь. Вся точка использования AlarmManager
Так что ваше «родительское приложение» не приходит во время памяти, когда она ничего не делает.