2014-07-02 5 views
8

Da quello che posso vedere, se pianifichi un allarme a tempo indeterminato non si fermerà finché non riavvii il dispositivo o disinstalla l'app.Gli AlarmManager Android continuano a essere eseguiti dopo l'aggiornamento di un'app?

Mi chiedevo, come si comportano in caso di aggiornamento di un'app? Ad esempio, scarichi la versione 1 dell'app da Play Store, ad esempio, ed esegui l'app e questo allarme inizia a funzionare. Quindi viene rilasciata la seconda versione e viene eseguito un aggiornamento automatico o manuale. Questo allarme continua a funzionare (o devi riavviare l'app per avviare l'allarme)?

Nel mio scenario ne ho bisogno per farlo, quindi spero che la risposta sia che continuerà a funzionare. Tuttavia, cosa succede se hai cambiato il codice di allarme nella versione 2?

risposta

1

Fai qualcosa come this.

In sostanza, se ogni volta che si avvia l'app, si esegue nuovamente PendingIntent con lo stesso ID, se è in esecuzione non accadrà nulla e se non è in esecuzione verrà avviato.

In questo modo non devi preoccuparti di perdere l'allarme dopo un aggiornamento.

8

La risposta sembra essere che gli allarmi AlarmManager continuano a essere in esecuzione dopo un aggiornamento di app per la maggior parte delle versioni di Android. Sicuramente per Android 2.3.2 o superiore. Il UninstallReceiver in AlarmManagerService è stato aggiornato per gestire l'aggiornamento del pacchetto senza uccidere gli allarmi - vedere here dove c'è il commento esplicito:

// Questo pacchetto è in fase di aggiornamento; non uccidere i suoi allarmi.

Il codice per gestire questo non era nel 2.0.0 AlarmManagerService.UninstallReceiver

Mi rendo conto che questo deriva probabilmente la parte migliore di 3 anni troppo tardi per aiutare il PO, ma si spera che potrebbe aiutare gli altri.

Problemi correlati