Mi az a "kontextus" android android-kontextusban kód q - egy orosz (ru)
Ahogy a neve is mutatja, ez összefüggésben a jelenlegi állapot az alkalmazás / objektumot. Ez lehetővé teszi, hogy az újonnan létrehozott objektum, hogy megértsék, mi történik. Jellemzően akkor hívják, hogy információt kapjon a másik része a program (Activity és csomag / alkalmazás).
Tudod kap összefüggésben, ami getApplicationContext (). getContext (). getBaseContext (), vagy ezt a (ha egy osztály, amely túlterjed egy kontextus. így például, osztály Application, tevékenység, szolgáltatás és IntentService).
Egy tipikus használati kontextus:
Az új objektumok létrehozását. az új ötletek, adapterek, hallgatók:
Hozzáférés a szabványos megosztott erőforrások. Olyan szolgáltatások, mint LAYOUT_INFLATER_SERVICE, SharedPreferences:
Az alkatrészekhez való hozzáférés kifejezetten. tartalmát illetően szolgáltatók, broadcast, szándékok
Beállítása összefüggésben.
- Context adatok jelentése a közeg
- Hozzáférést biztosít olyan dolgok, mint az adatbázisban
Egyszerűsített módozatait.
Vegye figyelembe, hogy a személy-X a vezérigazgató egy szoftver fejlesztő.
Jelenleg a cég vezető építész, a vezető építész az összes munkát a cég, amely magában foglalja az adatbázisban, a felhasználói felület, és így tovább. D.
Most vezérigazgató felvesz egy új fejlesztő.
Úgy beszél a felelőssége Építész újonnan felvett személy alapján egy új emberi képességek, függetlenül attól, hogy együtt fog működni az adatbázis vagy a felhasználói felület, és így tovább. D.
Egyszerűsített módozatait.
Úgy tűnik, van, hogy az Android tevékenység erőforrás alkalmazását.
Ez olyan, mint amikor felkeresi a hotel kívánt reggeli, ebéd és vacsora a megfelelő időben, nem?
Sok más dolog, hogy tetszik a tartózkodása alatt. Hogyan lehet ezeket a dolgokat?
Azt kérdezi, hogy az a személy szolgáló helyiség, hogy ha ezek a dolgok.
Itt a fő kiszolgáló helyiségek felé összefüggésben, feltételezve, hogy te vagy az egyetlen esemény, és a szálloda lesz az alkalmazás, és végül, reggeli, ebéd és vacsora legyen az erőforrást.
Amik társított keretében:
- Loading erőforrás.
- Kezdve egy új üzlet.
- Létrehozása látható.
- A rendszer karbantartása.
Kontextus - alap osztály Activity. Szolgálat. Alkalmazás. és így tovább. D.
Egy másik módja, hogy leírja azt :. megfontolja a kontextusban, mint egy távoli TV-csatorna és a televízióban - a források, szolgáltatások, felhasználása szándékok stb D. - - - Úgy viselkedik, mint egy távoli hozzáférést, hogy hozzáférjen a különböző források, hogy az előtérben.
- Így a távoli hozzáférést a csatornák, mint a források, szolgáltatások, és így a használata szándékait. D.
- Hasonlóképpen. Bárki, aki hozzáfér a távoli, természetesen hozzáfér az összes dolgot, mint források, szolgáltatások, és így a használata szándékait. D.
Különböző módszerek hívás, amely akkor kap összefüggésben
- getApplicationContext ()
- getContext ()
- getBaseContext ()
- Vagy ez (amikor az osztályban tevékenység)
ez -> a keretében a jelenlegi tevékenységet.
Context témát az Android, úgy tűnik, hogy túl bonyolult. Az emberek csak tudom, hogy összefüggésben van szükség gyakran kell csinálni az alap dolgokat Android. Az emberek néha pánik, mert próbálnak végrehajtani egy műveletet, amely megköveteli a kontextusban, és nem tudom, hogyan kell „” a megfelelő kontextusban. Megyek próbálja demisztifikálni az ötlet Context Android. Teljes tárgyalása a probléma túlmutat a jelen cikk, de megpróbálom, hogy áttekintést adjon, úgy, hogy megértsék, mi az összefüggés, és hogyan kell használni. Ahhoz, hogy megértsük, mi a kontextusban nézzük meg a forráskód:
Nos, ő dokumentációt ad egy nagyon egyszerű magyarázat: Context osztály - „interfész a globális információs környezet alkalmazások.”
keretében az osztály nyilvánították egy absztrakt osztály, amelynek megvalósítása biztosítja az Android operációs rendszer. A dokumentum továbbá kimondja, hogy a kontextus «. Ez lehetővé teszi a hozzáférést az erőforrásokhoz és alkalmazási osztályok, valamint interception műveletek az alkalmazás szintjén, mint a futás, műsorszóró és vételi szándékkal, és így tovább. D.”.
Most már értem, hogy miért a neve a kontextusban. Azért, mert ez. Context biztosítja a kapcsolatot, vagy horog, ha szükséges, a tevékenység, szolgáltatás, vagy bármely más alkatrész, ezáltal összekötve azt a rendszert, amely hozzáférést biztosít a globális alkalmazási környezetben. Más szavakkal: Context választ ad arra a kérdésre, hogy az összetevői „ahol a fene, én kezelik az alkalmazás egészének, és hogyan lehet kapcsolatba lépni / kommunikálni a többi alkalmazást?” Ha ez az egész úgy tűnik, egy kicsit zavaros, gyorsan nézd meg a technikát felfedezték osztálya kontextus, ez ad némi információt arról a valódi természetét.
Itt van egy véletlenszerű mintavétel e módszerek: 1. getAssets () 2. getResources () 3. getPackageManager () 4. getString () 5. getSharedPrefsFile ()
Mi a közös az összes ezeket a módszereket? Mindegyikük bárki számára hozzáférhetővé teszik a kontextusban, hogy hozzáférjenek a kérelem források.
Context, más szóval, kampók összetevő, amely utal rá, hogy a többi alkalmazási környezet. Például, az erőforrások (gondolom „/ eszközök” a projekt) állnak az alkalmazás során, feltéve, hogy a tevékenység, a szolgáltatás, vagy valami mást tudjuk, hogyan lehet ezekhez való hozzáférés. Ugyanez vonatkozik a «getResources ()», amely lehetővé teszi, hogy a dolgokat, mint a «getResources (). GetColor ()», amely csatlakozni fog, hogy egy erőforrás colors.xml (ne felejtsük el, hogy aapt lehetővé teszi a hozzáférést a forrásokat a Java-kód, ez egy külön kérdés).
Az eredmény az, hogy a környezet - ez az, ami lehetővé teszi a hozzáférést a rendszer erőforrásait és azok összetevőit horog „További alkalmazások”. Nézzük meg a Context alosztályok, osztályok, amelyek végrehajtását az absztrakt osztály kontextusban. A legnyilvánvalóbb osztály egy osztály sok mindent örököl Activity Activity ContextThemeWrapper, amely örökölt ContextWrapper, amely örökölt összefüggésben. Ezek az osztályok hasznos dolgok megértésére egy mélyebb szinten, de abban a pillanatban elég azt tudni, hogy ContextThemeWrapper és ContextWrapper - ez nagyjából mit Ezek megvalósítása az absztrakt elemeket Context osztály maga a „csomagolás” keretében (a tényleges környezet) és a delegáció funkciók ebben az összefüggésben. Példa hasznos - egy osztály absztrakt módszer ContextWrapper «getAssets» a környezet osztályhoz van megvalósítva a következőképpen:
Mbase - ez csak egy doboz, a díszlettervező egy adott kontextusban. Így összefüggésben van csomagolva és ContextWrapper átruházhatja annak végrehajtását getAssets eljárás ebben az összefüggésben. Térjünk vissza a figyelmet a Aktivitás osztálya, hogy végül örökli a kontextus, hogy hogyan is működik.
Ön valószínűleg tudja, mit jelent a „aktív”, de a nézet - ez alapvetően „az egyetlen dolog, amit egy felhasználó tud csinálni. Ő törődik az ablakot, hogy igazodjon a felhasználói felület, amellyel a felhasználó kölcsönhatásba lép. " A fejlesztők ismerik más API-felületek, és még csak nem is a fejlesztők úgy vélik, hogy ez egy „screen”. Ez technikailag pontatlan, de ez nem számít, a céljainknak. Szóval, hogyan lép kölcsönhatásba Activity és kontextus, és mi történik a kapcsolatuk örökséget?
Ismét, ez hasznos, hogy konkrét példákat. Mindannyian tudjuk, hogyan kell vállalkozást indítani. Ha van egy „kontextus”, ahonnan van, akkor indítsa el a műveletet, egyszerűen hívja startActivity (szándék), ahol a szándék leírja a kontextusban, ahonnan indul a cselekvés és tevékenység, amely a futtatni kívánt. Ez egy ismerős startActivity (ez SomeOtherActivity.class).
De mi az „ez”? «Ez a» - ez a tevékenység, mert az Activity osztály örökli kontextusban. Teljes kanál néz ki: Ha telefonál startActivity, végül Activity osztály csinál valamit, mint ez:
Ezért használja az osztály execStartActivity hangszerelés (valójában a belső osztály hangszerelés, az úgynevezett ActivityResult).
Ebben a szakaszban kezdik keresni a rendszeren belül.
Itt, az operációs rendszer tulajdonképpen kezel mindent. Tehát hogyan hangszerelés megkezdi munkáját pontosan? Nos, a paraméter «ez» a módszer execStartActivity fent - ez a tevékenység, azaz a kontextus, és execStartActivity használja ebben az összefüggésben.
Áttekintés 30000: műszerezettség egy osztály tartalmazza a következő lista, amely azt szabályozza, hogy csináld. Ezt a listát használja, hogy összehangolja valamennyi akciót és zavartalan működésének biztosítása érdekében az egész folyamat flow menedzsment tevékenységét.
Vannak olyan műveletek, amelyek még nem teljesen tisztázott, ahol gondok vannak a koordináták és a folyamatokat. Végül ActivityResult használja a saját működését - ActivityManagerNative.getDefault (). StartActivity (), amely egy az összefüggésben, hogy adja át, ha az úgynevezett startActivity. A kontextust, amelyben arra használják, hogy segítsen a „szándék megoldása”, ha szükséges. szándékok felbontás - a folyamat, amellyel a rendszer meg tudja határozni a célját szándék, ha nincs a listán. (Lásd a kézikönyv további információkért).
Az utolsó szó: valamilyen oknál fogva, az emberek, akik nem ismerik az Android (és még az emberek, akik nem annyira új), teljesen elfelejteni objektumorientált programozást, amikor az Android. Valamilyen oknál fogva, az emberek azért küzdenek, hogy az Android-fejlesztési paradigmák előre megfontolt vagy tanult viselkedés.
Az Android saját paradigma és egy bizonyos minta, ami valójában elég következetes, ha elengedi az előre átgondolt fogalmakat és egyszerűen elolvasni a dokumentációt és kezelési fejlesztők számára. De a lényeg, bár a „kapok a megfelelő kontextusban” néha nehéz lehet, az emberek pánikba feleslegesen, mert azzal a helyzettel szembesülnek, ahol szükség van összefüggésben, és úgy vélik, hogy nem. Ismét Java egy objektum-orientált nyelv, öröklés design.
Te csak „van” keretében tevékenységét, mert a tevékenység maga örökölt az összefüggésben. Nincs varázslat (kivéve az összes, hogy az operációs rendszer nem önmagában lehet beállítani a különböző paramétereket, és megfelelően „dallam” a környezet). Így a problémák kiküszöbölése, memória / teljesítmény (például megőrzésének hivatkozások összefüggésben, ha nincs rá szükség, vagy tenni valamit ez ellen úgy, hogy negatív hatással van a memória stb D ..) Háttér - egy objektum, mint bármely más és lehet továbbítani, mint bármely POJO (egyszerű Java-objektum). Néha szükség lehet tenni az okos dolog-e tölteni az összefüggésben, de a hétköznapi Java-osztály, amely kiterjeszti a semmi más, mint maga a tárgy, így lehet írni, amely hozzáférést biztosít a kontextusban Egyszerűen tegye a nyilvános eljárás, hogy vesz egy kontextusban, majd ennek az osztályban, ha szükséges. Ez nem azt jelenti, hogy teljes kezelés a belső alkatrészek az összefüggésben vagy Android, de remélem, hogy hasznos lesz demisztifikálják keretében.
Kontextus - a leíró rendszer Ez biztosítja ilyen szolgáltatásokat, mint az erőforrások lehetővé teszik, az adatbázisokhoz való hozzáférés és preferenciák, és így tovább. D. Android app lépéseket. Ez hasonló kezelni a környezet, amelyben az alkalmazás fut. Activity objektum örökli a Context objektumot.