Почему трансляции AlarmManager отменяются, когда приложение убивают? - PullRequest
5 голосов
/ 15 мая 2010

Хорошо, у меня зарегистрировано два BroadcastReceiver. Когда приложение закрывается, они оба запускаются в подходящее время и выполняют соответствующие действия.

Если приложение закрыто, а затем убито (скажем, с помощью 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> 

и в AlarmManager / BroadcastReceivers

ничего эзотерического не происходит

1 Ответ

0 голосов
/ 15 мая 2010

Предположительно, то же самое происходит, если родительское приложение убито из-за низкого память

Вы предполагаете неправильно. Так называемые «убийцы задач» используют определенный API, который не используется в условиях нехватки памяти. API «убийца задач» уничтожает все, включая запланированные тревоги.

Более того, ваше родительское приложение, надеюсь, не запомнится. Весь смысл использования AlarmManager заключается в том, что ваше «родительское приложение» не занимается захватом памяти, когда оно ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...