Hva er egentlig en Context
-klasse i Android-programmering, og hva brukes den til?
Jeg leste om det på utviklernettstedet, men jeg klarer ikke å forstå det tydelig.
For å si det enkelt:
Som navnet antyder, er det konteksten for applikasjonens/objektets nåværende tilstand. Det lar nyopprettede objekter forstå hva som har foregått. Vanligvis kaller du det for å få informasjon om en annen del av programmet ditt (aktivitet og pakke/søknad).
Du kan få konteksten ved å kalle getApplicationContext()
, getContext()
, getBaseContext()
eller this
(når du er i en klasse som strekker seg fra Context
, for eksempel klassene Application, Activity, Service og IntentService).
Typisk bruk av kontekst:
Opprette nye objekter: Opprette nye visninger, adaptere, lyttere:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
Tilgang til felles standardressurser: Tjenester som LAYOUT_INFLATER_SERVICE, SharedPreferences:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
Tilgang til komponenter implisitt: Når det gjelder innholdsleverandører, sendinger, intensjon
getApplicationContext().getContentResolver().query(uri, ...);
En kontekst er et håndtak til systemet; den tilbyr tjenester som å løse ressurser, få tilgang til databaser og preferanser og så videre. En Android-app har aktiviteter. Kontekst er som et håndtak til miljøet applikasjonen din kjører i for øyeblikket. Aktivitetsobjektet arver Context-objektet.
For mer informasjon, se Introduksjon til Android-utvikling med Android Studio - Opplæring.
En Android Context er et Grensesnitt (i generell forstand, ikke i Java-forstand; i Java er Context
faktisk en abstrakt klasse!) som gir tilgang til applikasjonsspesifikke ressurser og klasse og informasjon om applikasjonsmiljøet.
Hvis Android-appen din var en webapp, ville konteksten din være noe som ligner på ServletContext
(jeg gjør ikke en nøyaktig sammenligning her).
Aktivitetene og tjenestene dine utvider også Context
, slik at de arver alle disse metodene for å få tilgang til miljøinformasjonen der appen kjører.