¿Por qué las transmisiones AlarmManager se cancelan cuando la aplicación se mató?
-
27-09-2019 - |
Pregunta
Ok, así que tengo dos BroadcastReceiver registrado. Cuando la aplicación que se cierra tanto el fuego en el momento apropiado y hacer las cosas adecuadas.
Si se cierra luego mató a la aplicación (digamos con un AppKiller), los receptores nunca reciben sus emisiones, y no pasa nada.
Es de suponer que lo mismo sucede si la aplicación de los padres muere por falta de memoria, así que ¿cómo me aseguro de esas emisiones son despedidos / recibido. Los estados de la API que incluso si la aplicación se mató debería fuego, ¿Alguien más tiene experiencia con esta situación?
Si se ayuda a mi manifiesto es:
<!-- 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>
y nada esotérico está pasando en el AlarmManager / BroadcastReceivers
Solución
Es de suponer que lo mismo sucede si la aplicación de los padres muere debido a la baja memoria
Se presume incorrectamente. Los llamados "asesinos de tareas" están explotando un API particular, uno que no se utiliza en condiciones de poca memoria. El "asesino tarea" nukes API todo, incluyendo las alarmas programadas.
Por otra parte, la aplicación de los padres esperemos que no está en la memoria en el primer lugar. El punto de usar AlarmManager
es por lo que su "aplicación de los padres" no está en torno a tomar la memoria cuando no está haciendo nada.