2012-05-22 7 views
5

Ho un broadcastReceiver registrato nel manifest che riceve le notifiche da AlarmManager. Tutto funziona alla grande mentre l'app è in esecuzione, ad es. viene chiamato il metodo onReceive().BroadcastReceiver quando l'applicazione non è in esecuzione

Tuttavia, se faccio fermare forzatamente l'app in modo che possa verificare se broadcastReceiver continuerà a ricevere notifiche da AlarmManager mentre non è in esecuzione, il metodo onReceive() non viene mai chiamato.

L'arresto forzato non può essere utilizzato per testare il ricevitore AlarmManager & in questo modo? Sembra che ci siano alcune risposte che dicono che non funzionerà, e alcuni dicono che dovrebbe.

In caso contrario, c'è un modo per testarlo?

Grazie.

+0

Avete definito il vostro 'BroadcastReceiver' sul manifest? –

+0

@jFort: stai usando uno dei tipi 'WAKEUP' per l'allarme? In caso contrario, potrebbe essere la causa, ma non ne sono sicuro. – Squonk

+0

Sì, il destinatario della trasmissione è definito nel manifest. E il gestore degli allarmi è definito AlarmManager.RTC – jFort

risposta

3

Se il ricevitore è registrato nel manifest, dovrebbe sempre funzionare. Anche se la tua app è chiusa forzatamente.

Il problema potrebbe essere l'allarme. Gli allarmi potrebbero essere cancellati, una volta che la tua app si chiuderà.

+0

Grazie per quello. Se lo so ** dovrebbe ** funzionare continuerò a risolvere i problemi. C'è un modo per scoprire cosa sta succedendo a questi allarmi? – jFort

+0

Un incidente significa, succede qualcosa di inaspettato. Quindi, probabilmente dovresti reinizializzare gli allarmi quando programmi i recuperi. Non so esattamente cosa succede agli allarmi. Scusa –

+1

Per Android> versione 3.0, il tuo ricevitore smetterà di funzionare quando la tua app verrà chiusa forzatamente! –

1

Come da commenti su this answer, non è possibile testare questo tipo di cose uccidendo l'app da soli. Devi lanciare un'eccezione in modo che l'app muoia "naturalmente".