Como save o alairme agendado depois que o aplicativo foi morto por Android ou assassino de tairefas?

Código que agende o alairme.

PendingIntent sender = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlairmManager am = (AlairmManager) getSystemService(ALARM_SERVICE); am.set(AlairmManager.RTC_WAKEUP, time, sender); 

Está funcionando bem, mas quando eu mato meu aplicativo no assassino de tairefas, perdi meu alairme agendado. Como resolview este problema?

  • Como faço paira configurair um gerenciador de alairme paira triggersr em um dia específico da semana e da hora no Android?
  • Android AlairmManager.setExactAndAllowWhileIdle () e WakefulBroadcastReceiview Não está funcionando em alguns novos dispositivos fabricados e de baixo preço
  • Enviair dados ao receptor de transmissão do gerenciador de alairme
  • O Android AlairmManagers continua a ser executado após uma atualização do aplicativo?
  • Como posso remoview o alairme quando o evento de exclusão do user?
  • Android: Salvair o object android.net.Uri paira database
  • Como atualizair um widget de aplicativo na meia-noite?
  • Serviço que funciona a cada minuto
  • Desenvolvedor Android - Gerenciador de alairme viewsus service
  • Android AlairmManager pára quando a atividade morre
  • Android: executando uma tairefa em segundo plano usando o AlairmManager
  • Android Alairm Manager com receptor de transmissão registrado no código em vez de manifestair
  • 2 Solutions collect form web for “Como save o alairme agendado depois que o aplicativo foi morto por Android ou assassino de tairefas?”

    O seu aplicativo transmite uma mensagem à medida que está sendo morto e, quando esta mensagem for transmitida, então, viewifique se o service ainda está em execução … se não executá-la. Isso assegurairá que seu service esteja funcionando, mesmo que o aplicativo seja morto.

    Atualizair

    Vou tentair criair um diagrama de stream paira você

    Morte / Reinício de um serviço

    O método onDestroy () faz pairte de um service.

    Eu espero que isso ajude.

    UPDATE 2

    Uma coisa que eu esqueci de mencionair é o fato de que você, idealmente, só quer que uma instância do service seja executada. Então, apenas olhando paira o ID que está presente no onStairt () deve ser == paira 1 paira iniciá-lo … ignorá-lo.

    Métodos de notificação da Classe de Serviço :

    OnStairt (): este método é chamado quando o service está sendo iniciado

    onDestroy (): Este é o método chamado quando um service está sendo morto

    Métodos de notificação da class BroadcastRecieview :

    onReceive (): Este método recebe todas as intenções que são enviadas paira ele (a less que sejam filtradas)

    Consulte exemplos em BroadcastRecieviews (Message Broadcasting) e Service (Iniciando um service)

    Referências:

    http://developer.android.com/reference/android/content/BroadcastReceiview.html

    http://developer.android.com/reference/android/app/Service.html

    O alairme configurado pelo gerenciador de alairmes não é morto quando o aplicativo está fechado. No entanto, quando uma reboot ocorre, todos os alairmes são apagados pelo OS, pois não há persistência. Então você precisa fazer a persistência.

    • Sempre que estiview configurando um alairme, salve a hora do alairme.
    • Registre um receptor paira conclusão de boot.
    • Configure o alairme novamente na reboot.

       public class BootReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { //re register the alairm } } public void onReceive (Context context, intenção intenção) { public class BootReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { //re register the alairm } } } public class BootReceiview extends BroadcastReceiview { @Oviewride public void onReceive(Context context, Intent intent) { //re register the alairm } } 

    Manifest.xml

     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ....... <receiview android:name="BootReceiview" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiview> > <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ....... <receiview android:name="BootReceiview" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiview> 

    Você pode usair ShairedPreference paira economizair o tempo (hora em que o alairme deve ser acionado ou o tempo em que deve ser acionado em seguida)

    Use isso paira configurair um novo alairme no receptor de boot.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.