Mi scusi per una domanda così elementare. Capisco che la classe Application venga istanziata all'avvio del processo della mia app e capisco che quando il telefono è completato, verrà richiamato il mio ricevitore di avvio. Presumo che dal momento che il telefono sappia tramite il manifest che la mia app detiene il filtro di intent BOOT_COMPLETED, il processo di riavvio è. Il telefono si riavvia, il telefono avvia tutti i processi con BOOT_COMPLETED, il telefono attiva la trasmissione BOOT_COMPLETED. La mia preoccupazione derivava dal chiedermi se facessi riferimento alle variabili di istanza della classe Application all'interno del mio ricevitore di avvio se il ricevitore dovesse mai essere chiamato prima che la mia classe Application venisse istanziata.È garantita l'istanza della classe Application prima che venga chiamato un ricevitore di avvio definito
Ancora una volta scusami se questo è ovvio. Non ho mai capito appieno le meccaniche di riavvio.
Forse mi manca, ma non vedo dove i post del blog eseguono il backup del tuo reclamo. Ad esempio, la stringa "provider" appare una sola volta nel primo post e non nel secondo. L'uso del "provider" da parte del primo post definisce semplicemente ciò che si è. Allo stesso modo, il termine più generico "componente" è usato nel primo post, non nel secondo, e da nessuna parte indica che l'applicazione è stata creata prima di qualsiasi componente. E mentre entrambi i post del blog si riferiscono a "applicazione", non vedo alcuna prova che i riferimenti facciano riferimento all'istanza "Applicazione", ma piuttosto "applicazione" come la forma lunga di "app". – CommonsWare
@CommonsWare: Blog 2 afferma "Questo metodo richiama il metodo makeApplication() che carica in memoria le classi specifiche dell'app." E per essere veramente chiari, guardando il [codice per makeApplication] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r1/android/app/ LoadedApk.java # LoadedApk.makeApplication% 28boolean% 2Candroid.app.Instrumentation% 29), vediamo che restituisce un'istanza Application. Inoltre, la domanda non ha nemmeno chiesto informazioni sui provider, ma per renderti felice :-), ho modificato la mia risposta per rimuovere quella parola. – cybersam
Sono d'accordo con la tua modifica. 'ContentProvider' è in realtà una borsa mista. In base alla registrazione, l'istanza di 'ContentProvider' viene creata dopo l'istanza di' Applicazione'. Tuttavia, 'onCreate()' di 'ContentProvider' viene chiamato prima di' onCreate() 'dell'applicazione'. – CommonsWare