Nella programmazione Android, cos'è esattamente una classe Context
e a cosa serve?
L'ho letto sul sito degli sviluppatori, ma non riesco a capirlo chiaramente.
In parole povere:
Come suggerisce il nome, è il contesto dello stato attuale dell'applicazione/oggetto. Permette agli oggetti appena creati di capire cosa sta succedendo. Tipicamente lo si chiama per ottenere informazioni riguardanti un'altra parte del programma (attività e pacchetto/applicazione).
Puoi ottenere il contesto invocando getApplicationContext()
, getContext()
, getBaseContext()
o this
(quando sei in una classe che estende da Context
, come le classi Application, Activity, Service e IntentService).
Usi tipici del contesto:
Creazione di nuovi oggetti: Creazione di nuove viste, adattatori, ascoltatori:
TextView tv = new TextView(getContext());
ListAdapter adapter = nuovo SimpleCursorAdapter(getApplicationContext(), ...);
Accesso alle risorse comuni standard: Servizi come LAYOUT_INFLATER_SERVICE, SharedPreferences:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*nome*, *modo*);
Accedere ai componenti implicitamente: Per quanto riguarda i fornitori di contenuti, le trasmissioni, l'intento
getApplicationContext().getContentResolver().query(uri, ...);
Un Context è una maniglia al sistema; fornisce servizi come la risoluzione di risorse, l'accesso a database e preferenze, e così via. Un'applicazione Android ha delle attività. Context è come un handle per l'ambiente in cui l'applicazione è attualmente in esecuzione. L'oggetto attività eredita l'oggetto Context.
Per maggiori informazioni, guarda in Introduzione allo sviluppo di Android con Android Studio - Tutorial.
Un Context Android è una Interfaccia (in senso generale, non in senso Java; in Java, Context
è in realtà una classe astratta!) che permette l'accesso a risorse e classi specifiche dell'applicazione e informazioni sull'ambiente dell'applicazione.
Se la tua applicazione Android fosse una web app, il tuo contesto sarebbe qualcosa di simile a ServletContext
(non sto facendo un confronto esatto qui).
Le tue attività e servizi estendono anche Context
, quindi ereditano tutti quei metodi per accedere alle informazioni sull'ambiente in cui l'app è in esecuzione.