¿Cómo guardar la alarma programada después de que la aplicación fue asesinada por Android o asesino de tareas?
Código que programa la alarma.
PendingIntent sender = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, time, sender);
Su trabajo bien, pero cuando matar a mi aplicación en el asesino de tareas, perdí mi alarma programada. ¿Cómo resolver este problema?
- La alarma se borra al reiniciar en nadroid
- La alarma de AlarmManager se activa inmediatamente
- Android setRepeating () y setInexactRepeating () no se disparan
- ¿Cómo comprobar si AlarmManager ya tiene un conjunto de alarmas?
- ¿Cómo configurar una alarma de repetición exacta en API 19 (kitkat)?
- ¿Cuál es la mejor manera de crear un recordatorio de citas en Android?
- Cómo reiniciar la alarma si la aplicación se cierra forzada en android
- Confiabilidad del Administrador de alarmas
- ¿Cuán inexacto es setInexactRepeating () para AlarmManager?
- AlarmManager borrar todos los horarios en el apagado?
- Android cancelar todos los alarmmanager
- La alarma de Android no funciona
- ¿Cómo se inicia una Actividad con AlarmManager en Android?
Haga que su aplicación difunda un mensaje mientras se está matando, y cuando este mensaje se transmite, haga que un oyente compruebe si el servicio sigue funcionando .. si no lo ejecuta. Esto asegurará que su servicio se está ejecutando incluso si se cancela la aplicación.
Actualizar
Voy a tratar de crear un diagrama de flujo para usted
El método onDestroy () forma parte de un servicio.
Espero que esto ayude.
ACTUALIZAR 2
Una cosa que me olvidé de mencionar es el hecho de que idealmente sólo desea una instancia del servicio que se ejecutará. Así que basta con mirar el ID que está presente en el onStart () debería ser == a 1 para iniciarlo más .. ignorarlo.
Métodos de notificación de la clase de servicio :
OnStart (): Este método se llama cuando se está iniciando el servicio
OnDestroy (): Este es el método que se llama cuando se está matando un servicio
Métodos de notificación de la clase BroadcastReciever :
OnReceive (): Este método recibe todas las intenciones que se le envían (a menos que se filtre)
Busque ejemplos sobre BroadcastRecievers (Message Broadcasting) y Service (Inicio de un servicio)
Referencias:
http://developer.android.com/reference/android/content/BroadcastReceiver.html
http://developer.android.com/reference/android/app/Service.html
La alarma establecida por el administrador de alarmas no se elimina cuando se cierra la aplicación, sin embargo, cuando se produce un reinicio, todas las alarmas son borradas por el OS, ya que no hay persistencia. Así que usted necesita hacer la persistencia.
- Cada vez que realice una alarma, guarde la hora de la alarma.
- Registrar un receptor para completar el arranque.
-
Configure la alarma de nuevo al reiniciar.
public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //re register the alarm } }
Manifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ....... <receiver android:name="BootReceiver" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
Puede usar SharedPreference para guardar el tiempo (el momento en que debe activarse la alarma o el momento en que se debe activar a continuación)
Utilícelo para establecer una nueva alarma en el receptor de arranque.
- ¿Cuál es la diferencia entre android: height y android: layout_height?
- Android Studio ADB borra los archivos logcat cuando falla la aplicación! Oh myy