Video: Como usar Dagger2 Ejemplo Sencillo - Inyeccion de Dependencias 07 2024
En måte å starte en bestemt aktivitet i Android-appen din på er med en kontekst. En kontekst er et "grensesnitt til global informasjon om et applikasjonsmiljø. "(Sier Android-docs.) Uformelt er en sammenheng bakgrunnsinformasjonen du kanskje vil vite om de tingene som faktisk skjer.
For en Android-app kan kontekst Java-objektet omfatte appens pakkenavn, temaet, bakgrunnsbildet, navnene på filene som er tilknyttet appen, og pekere til posisjonstjenester, til brukerkontotjenester og til annen info. Alt dette er tilgjengelig programmatisk ved hjelp av et Java Context-objekt.
Ordet beskriver programmatisk noe du kan få tilgang til (og kanskje til og med endre) i prosjektets Java-kode.
En Android-aktivitet kjører i en bestemt sammenheng. Det er fornuftig. Men her er en ide som er vanskelig å omfavne: En aktivitet er en kontekst. Det er en kontekst av to grunner (den ene er teknisk, den andre er noe intuitiv):
I Android SDK, klassen android. app. Aktivitet er en underklasse av android. innhold. Kontekst.
En aktivitet har alle de tingene som en hvilken som helst kontekst har, nemlig appens pakkenavn, temaet, bakgrunnsbildet, navnene på filene som er tilknyttet appen og pekere til plasseringstjenester, til brukeren kontotjenester og annen info.
I koden nedenfor kaller en aktivitet en annen aktivitet i samme søknad.
pakke min. pakke; importere android. app. Aktivitet; importere android. os. Bunt; offentlig klasse SomeActivity utvider Aktivitet {// … kode av noe slag tilhører her Intent Intent = New Intent (dette, OtherActivity. class); startActivity (intent);}
I denne koden sier de to siste setningene: "Med denne aktiviteten din egen kontekst, start å kjøre en forekomst av OtherActivity. "(Hvis alt går bra, utvider klassen OtherActivity Androids aktivitetsklasse, og du er god til å gå.)
I eksemplet tar Intent-klassens konstruktør to parametere - en kontekst og en Java-klasse. Ordet dette representerer omslutningen av SomeActivity-forekomsten. Det er bra, fordi konstruktørens første parameter er av typen Kontekst, og Androids aktivitetsklasse er en underklasse av abstrakt kontekstklasse.
I eksempelkoden ovenfor får Intent-konstruktøren pakkenavnet OtherActivity fra dette - konteksten til SomeActivity-objektet.
Hver aktivitet er en del av et program, og en applikasjonsinstans er også en kontekst.Så i mange programmer kan du bruke noen av følgende metodeanrop (i stedet for dette) for å oppnå en kontekstinstans:
getContext () getApplicationContext () getBaseContext ()
GetApplicationContext og getBaseContext-metodene har begrensede, spesialiserte bruksområder i Android-programmer.
I koden under bruker en aktivitet fra en app en kontekst for å ringe til en annen apps aktivitet.
pakke min. pakke; importere android. app. Aktivitet; importere android. os. Bunt; offentlig klasse SomeActivity utvider Aktivitet {// … kode av noe slag tilhører her Prøv {otherContext = createPackageContext ("other.pack", Kontekst. CONTEXT_IGNORE_SECURITY | Kontekst. CONTEXT_INCLUDE_CODE);} catch (NameNotFoundException e) {e. printStackTrace ();} Klasse otherClass = null; prøv {otherClass = otherContext. getClassLoader (). loadClass ("other.pack. OtherAppActivity");} fangst (ClassNotFoundException e) {e. printStackTrace ();} Intent Intent = Ny Intent (OtherContext, OtherClass); startAktivitet (hensikt);}
Det andre settet med kode er mer komplisert enn det første eksempelet du ser her. Men det meste av kompleksiteten kommer fra hvordan Java laster klasser. På en eller annen måte oppretter denne koden en hensikt fra en kontekst og et klassenavn, og starter deretter hensiktens aktivitet.