2009-09-08 18 views
7

So che il modello di attività di Android è leggermente diverso da quello che di solito considero una "app".(android) Come fare qualcosa sull'app "lanciare"?

Voglio fare qualcosa (in questo caso, controllare alcune notifiche su un server e mostrarle se disponibili) quando la mia app è "lanciata". Qual è un buon modo per realizzare questo?

Probabilmente non voglio farlo in OnCreate di un'attività, poiché ogni attività può essere creata un numero illimitato di volte: il codice viene chiamato più spesso del necessario.

L'app ha anche più punti di accesso: dovrei duplicare il controllo in ogni attività?

Quello che sto pensando di fare è la creazione di questo codice dentro l'oggetto Application, insieme con una bandiera che tiene traccia se è già stata chiamata - e basta chiamare da onCreate di ogni attività().

C'è un modo migliore o più "corretto" per farlo?

risposta

9

Il destra, modo Android approvato per farlo è:

  • Crea il tuo android.app.Application classe
  • l'override del metodo onCreate
  • Nel AndroidManifest.xml, modificare l'attributo android:name del application elemento al nome della classe
  • Ora, ogni volta che la tua app è "avviata" (una delle tue attività è iniziata per la f prima volta e nessun'altra istanza è attiva) verrà chiamato il numero onCreate.

È inoltre possibile trovare il metodo onTerminate utile.

+0

Grazie - probabilmente è quello di cui ho bisogno, farò un tentativo. –

+0

Whoa ... Non ho mai capito che potessi farlo. Ha senso ora che lo so, però ... –

0

Puoi controllare se il pacchetto è passato a onCreate() è null?

Non null è "Se l'attività viene reinizializzata dopo aver precedentemente essere arrestato ..."

0

C'è probabilmente nulla di male nel mettere in onCreate; l'attività viene realmente distrutta solo quando il sistema operativo richiede la RAM per qualcos'altro, non quando l'utente accede a un'altra app.

MODIFICA: È anche possibile avere un Service that runs when the device gets booted up. Questa potrebbe essere un'opzione migliore se vuoi anche controllare quando l'app si avvia, poiché dovrai solo chiamare context.startService dall'Activity per eseguire il controllo. Assicurati di fermarlo quando è fatto se non ne hai bisogno per essere persistente.

+1

Bene, ci sono alcuni casi, quando onDestroy() viene chiamato in risposta a azioni un po 'innocenti - come premere il pulsante INDIETRO o cambiare l'orientamento del dispositivo (se non diversamente specificato esplicitamente). E solo in quest'ultimo caso, il parametro Bundle passato a onCreate() NON è nullo. –

Problemi correlati