Qual è la differenza tra contesto, contesto dell'attività e contesto dell'applicazione nella programmazione Android?
Differenza tra contesto, contesto dell'attività e contesto dell'applicazione nella programmazione Android
Hm....
Alcuni fatti in anticipo
- Context è una classe astratta (ciò significa che non si può istanziare direttamente).
- Loro (Application Context, Activity, Service) sono tutte sottoclassi della classe ContextWrapper
- Ma ContextWrapper è solo una classe adattatore per Context - non l'implementazione effettiva
- Android fornisce l'oggetto implementato effettivo all'app - questa classe è chiamata AndroidImpl
- ContextWrapper delega tutte le chiamate di metodo a questa istanza AndroidImpl
- Il contesto che si ottiene quando si invoca getApplicationContext() è Singleton Context per l'applicazione
- Activity e Servizi stessi sono sottoclassi di Context
- Activity e Servizi ottengono la propria istanza dell'oggetto Context (Sì, avete letto bene)
Quindi questo dimostra che tutti i contesti non sono uguali e non sono uguali. E se non si presta attenzione a questo, ci si troverà in grossi guai. Finirete per creare perdite di memoria che causano scarse prestazioni delle applicazioni. Quindi dovete essere consapevoli di dove usare quale contesto. Non si può e non si deve usare getApplicationContext ovunque e allo stesso modo non si deve usare "this" o "MainAcitivity.this" ovunque.
Se volete un'analisi molto più dettagliata del perché avviene la perdita di memoria, come l'uso sbagliato del contesto è legato a questo, come rilevare le perdite di memoria e infine come codificare un'applicazione Android evitando le perdite di memoria allora sentitevi liberi di visitare la playlist sotto menzionata sul mio canale YouTube.
Articoli simili
- Come passare i dati da un'attività a un'altra attività WebView in Android Studio
- Come fa Google a sapere quali app uso? Quando controllo le impostazioni Web e Attività in La mia attività mostra quali app uso sul mio telefono.
- Come cancellare un'attività su un'app di attività
- Qual è la differenza tra applicazione client e applicazione di servizio?