Czym jest Context
klasa i do czego służy w programowaniu na Androida ?
Czytam o tym na stronie programisty , ale nie jestem w stanie tego jasno zrozumieć.
android
android-context
Brygadier
źródło
źródło
Odpowiedzi:
Mówiąc prosto:
Jak sama nazwa wskazuje, jest to kontekst bieżącego stanu aplikacji / obiektu. Pozwala nowo utworzonym obiektom zrozumieć, co się dzieje. Zwykle wywołuje się go, aby uzyskać informacje dotyczące innej części programu (działania i pakietu / aplikacji).
Można uzyskać kontekst powołując
getApplicationContext()
,getContext()
,getBaseContext()
lubthis
(gdy w klasie, która rozciąga się odContext
takich jak aplikacja, aktywność, serwis i IntentService klasach).Typowe zastosowania kontekstu:
Tworzenie nowych obiektów : Tworzenie nowych widoków, adapterów, detektorów:
Dostęp do standardowych wspólnych zasobów : Usługi takie jak LAYOUT_INFLATER_SERVICE, SharedPreferences:
Niejawny dostęp do komponentów : w odniesieniu do dostawców treści, transmisji, zamiarów
źródło
context.getSystemService(LAYOUT_INFLATER_SERVICE)
gdzie i jakcontext
zdefiniowano?Definicja kontekstu
Prostsze warunki (przykład 1)
Zastanów się, czy Person-X jest dyrektorem generalnym firmy zajmującej się oprogramowaniem.
W firmie jest główny architekt, ten główny architekt wykonuje całą pracę w firmie, która obejmuje np. Bazę danych, interfejs użytkownika itp.
Teraz CEO zatrudnia nowego programistę.
To architekt mówi o odpowiedzialności nowo zatrudnionej osoby na podstawie umiejętności nowej osoby, czy będzie ona pracować na bazie danych, interfejsie użytkownika itp.
Prostsze warunki (przykład 2)
To jest jak dostęp aktywności Androida do zasobów aplikacji.
Podobnie jest w przypadku wizyty w hotelu, kiedy chcesz zjeść śniadanie, lunch i kolację w odpowiednim czasie, prawda?
Jest wiele innych rzeczy, które lubisz podczas pobytu. Jak zdobyć te rzeczy?
Poprosisz osobę obsługującą pokój o przyniesienie tych rzeczy.
Tutaj osoba obsługująca pokój jest kontekstem, biorąc pod uwagę, że jesteś pojedynczym zajęciem, a hotel jest twoją aplikacją, wreszcie śniadanie, lunch i kolacja muszą być zasobami.
Do kontekstu należą:
Kontekst jest klasą podstawową dla działania , usługi , aplikacji itp
Innym sposobem na opisanie tego: rozważ kontekst jako zdalny od telewizora i kanału w telewizji są zasoby, usługi, korzystanie z zamiarów itp. - - - Tutaj pilot działa jako dostęp do uzyskania dostępu do wszystkich różnych zasobów na pierwszym planie.
Tak więc, Remote ma dostęp do kanałów takich jak zasoby, usługi, wykorzystanie intencji itp ...
Podobnie ... Każdy, kto ma dostęp do zdalnego, ma oczywiście dostęp do wszystkich rzeczy, takich jak zasoby, usługi, korzystanie z zamiarów itp
Różne metody uzyskiwania kontekstu
getApplicationContext()
getContext()
getBaseContext()
this
(będąc w klasie aktywności)Przykład:
Słowo kluczowe
this
odnosi się do kontekstu bieżącej działalności.źródło
getApplicationContext()
,getContext()
,getBaseContext()
..... sprawdź to -> ( stackoverflow.com/a/10641257 )SomeActivityName.this
. W wątku na przykładthis
odnosi się do wątku, a nie do aktywnościŹródło
Temat Kontekst w Androidzie wydaje się być mylący dla wielu. Ludzie po prostu wiedzą, że Kontekst jest dość często potrzebny do wykonywania podstawowych czynności w Androidzie. Ludzie czasami wpadają w panikę, ponieważ próbują wykonać operację wymagającą kontekstu i nie wiedzą, jak „uzyskać” właściwy kontekst. Spróbuję zdemistyfikować ideę kontekstu w Androidzie. Pełne podejście do problemu wykracza poza zakres tego postu, ale postaram się przedstawić ogólny przegląd, abyś wiedział, co to jest Kontekst i jak go używać. Aby zrozumieć, czym jest kontekst, spójrzmy na kod źródłowy:
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/Context.java
Czym dokładnie jest kontekst?
Cóż, sama dokumentacja zawiera dość proste wyjaśnienie: klasa Context to „Interfejs do globalnych informacji o środowisku aplikacji”.
Sama klasa Context jest zadeklarowana jako klasa abstrakcyjna, której implementację zapewnia system operacyjny Android. Dokumentacja stanowi ponadto, że kontekst „… umożliwia dostęp do zasobów i klas specyficznych dla aplikacji, a także wezwań do wykonywania operacji na poziomie aplikacji, takich jak uruchamianie działań, nadawanie i odbieranie zamiarów itp.”.
Teraz bardzo dobrze rozumiesz, dlaczego nazwa to Kontekst. To dlatego, że tak po prostu jest. Kontekst zapewnia link lub zaczep, jeśli chcesz, dla działania, usługi lub dowolnego innego komponentu, tym samym łącząc go z systemem, umożliwiając dostęp do globalnego środowiska aplikacji. Innymi słowy: kontekst zapewnia odpowiedź na pytanie składowe: „gdzie, do diabła, jestem w stosunku do aplikacji i jak uzyskać dostęp / komunikować się z resztą aplikacji?” Jeśli to wszystko wydaje się nieco mylące, szybkie spojrzenie na metody ujawnione przez klasę Context dostarcza dalszych wskazówek na temat jej prawdziwej natury.
Oto losowe próbkowanie tych metod:
getAssets()
getResources()
getPackageManager()
getString()
getSharedPrefsFile()
Co łączy te wszystkie metody? Wszystkie umożliwiają każdemu, kto ma dostęp do kontekstu, dostęp do zasobów całej aplikacji.
Kontekst, innymi słowy, przechwytuje komponent, który ma do niego odniesienie, do reszty środowiska aplikacji. Na przykład zasoby (w katalogu projektu „/ zasób”) są dostępne w aplikacji, pod warunkiem, że działanie, usługa lub cokolwiek wie, jak uzyskać dostęp do tych zasobów. To samo dotyczy tego,
getResources()
co pozwala robić takie rzeczy, jak podłączaniegetResources().getColor()
cię docolors.xml
zasobu (nieważne, że aapt umożliwia dostęp do zasobów za pośrednictwem kodu Java, to osobny problem).Skutek jest taki, że
Context
to, co umożliwia dostęp do zasobów systemowych i jej jakie haki komponenty do „większej aplikacji”. Przeglądowej Miejmy na podklasContext
, klas, które zapewniają realizację abstrakcyjnejContext
klasie. Najbardziej oczywista klasa toActivity
klasa.Activity
Dziedziczy odContextThemeWrapper
, który dziedziczy poContextWrapper
, który dziedziczy poContext
sobie. Te klasy są przydatne, aby spojrzeć na rzeczy na głębszym poziomie, ale na razie wystarczy to wiedziećContextThemeWrapper
iContextWrapper
wyglądać tak, jak brzmią. Implementują abstrakcyjne elementyContext
sama klasa przez „zawinięcie” kontekstu (kontekst rzeczywisty) i delegowanie tych funkcji do tego kontekstu. Przykład jest pomocny - wContextWrapper
klasa, metoda abstrakcyjnagetAssets
zContext
klasy jest implementowana w następujący sposób:mBase
jest po prostu polem ustawionym przez konstruktora w określonym kontekście. Kontekst jest więc zawijany iContextWrapper
deleguje implementację metody getAssets do tego kontekstu. Wróćmy do zbadaniaActivity
klasy, która ostatecznie dziedziczy,Context
aby zobaczyć, jak to wszystko działa.Prawdopodobnie wiesz, co to jest działanie, ale do przejrzenia - to w zasadzie „jedna rzecz, którą użytkownik może zrobić. Zajmuje się zapewnieniem okna, w którym można umieścić interfejs użytkownika, z którym użytkownik wchodzi w interakcje '. Programiści zaznajomieni z innymi interfejsami API, a nawet osoby niebędące programistami, mogą postrzegać je w języku narodowym jako „ekran”. Jest to technicznie niedokładne, ale nie ma znaczenia dla naszych celów. Więc jak zrobić
Activity
iContext
oddziałują na siebie i co dokładnie się dzieje w ich relacji dziedziczenia?Ponownie warto przyjrzeć się konkretnym przykładom. Wszyscy wiemy, jak uruchomić Działania. Pod warunkiem, że masz „kontekst”, od którego zaczynasz działanie, po prostu dzwonisz
startActivity(intent)
, gdzie zamiar opisuje kontekst, od którego zaczynasz działanie i działanie, które chcesz rozpocząć. To jest znajomestartActivity(this, SomeOtherActivity.class)
.A co to jest
this
?this
jest twoją działalnością, ponieważActivity
klasa dziedziczy poContext
. Pełna miarka wygląda następująco: kiedy zadzwoniszstartActivity
, ostatecznieActivity
klasa wykonuje coś takiego:Wykorzystuje więc klasę
execStartActivity
zInstrumentation
klasy (właściwie z klasy wewnętrznej wInstrumentation
nazwieActivityResult
).W tym momencie zaczynamy przyglądać się wewnętrznym elementom systemu.
W tym miejscu system operacyjny obsługuje wszystko. Więc w jaki sposób Instrumentacja dokładnie rozpoczyna działanie? Cóż, param
this
wexecStartActivity
powyższej metodzie jest twoją Aktywnością, tj. Kontekstem, iexecStartActivity
wykorzystuje ten kontekst.Przegląd 30 000 jest następujący: klasa Instrumentacja śledzi listę działań, które monitoruje w celu wykonania swojej pracy. Ta lista służy do koordynowania wszystkich działań i upewnienia się, że wszystko przebiega płynnie w zarządzaniu przepływem działań.
Istnieje kilka operacji, których nie w pełni zbadałem, które problemy z koordynacją wątku i procesu. Ostatecznie
ActivityResult
używa operacji natywnej -ActivityManagerNative.getDefault().startActivity()
która wykorzystujeContext
przekazaną podczas połączeniastartActivity
. Przekazany kontekst służy w razie potrzeby do „zamierzonego rozwiązania”. Rozwiązanie zamiaru jest procesem, w którym system może określić cel celu, jeśli nie zostanie on dostarczony. (Więcej informacji znajdziesz w przewodniku tutaj).Aby Android mógł to zrobić, potrzebuje dostępu do informacji dostarczanych przez
Context
. W szczególności system musi mieć dostęp do,ContentResolver
aby mógł „określić typ MIME danych intencji”. Cały ten fragment dotyczący sposobustartActivity
korzystania z kontekstu był nieco skomplikowany i nie do końca rozumiem wewnętrzne elementy. Moja główna uwaga miał tylko zilustrować, w jaki sposób należy uzyskać dostęp do zasobów całej aplikacji, aby wykonać wiele operacji niezbędnych dla aplikacji.Context
To zapewnia dostęp do tych zasobów. Prostszym przykładem mogą być Widoki. Wszyscy wiemy, co tworzysz Widok niestandardowy przez rozszerzenieRelativeLayout
lub innąView
klasę, musisz podać konstruktor, który pobiera plikContext
jako argument. Kiedy tworzysz swój niestandardowy widok, przekazujesz go w kontekście. Dlaczego? Ponieważ widok musi mieć dostęp do motywów, zasobów i innych szczegółów konfiguracji widoku. Konfiguracja konfiguracji jest w rzeczywistości doskonałym przykładem. Każdy kontekst ma różne parametry (pola wContext
implementacjach), które są ustawiane przez sam system operacyjny dla takich rzeczy jak wymiar lub gęstość ekranu. Łatwo jest zrozumieć, dlaczego te informacje są ważne przy konfigurowaniu widoków itp.Ostatnie słowo: z jakiegoś powodu ludzie, którzy nie znają Androida (a nawet ludzie nie tak nowi) wydają się całkowicie zapominać o programowaniu obiektowym, jeśli chodzi o Androida. Z jakiegoś powodu ludzie próbują nagiąć swój rozwój Androida do wcześniej wymyślonych paradygmatów lub wyuczonych zachowań.
Android ma swój własny paradygmat i pewien wzorzec, który jest właściwie całkiem spójny, jeśli porzucisz swoje uprzednio pomyślane pojęcia i po prostu przeczytasz dokumentację i przewodnik programisty. Chodzi mi jednak o to, że chociaż „uzyskanie właściwego kontekstu” może być czasem trudne, ludzie niesprawiedliwie wpadają w panikę, ponieważ wpadają w sytuację, w której potrzebują kontekstu i myślą, że go nie mają. Po raz kolejny Java jest językiem obiektowym z dziedziczonym projektem.
Kontekst „masz” tylko w swoim działaniu, ponieważ samo ono dziedziczy z kontekstu. Nie ma w tym żadnej magii (z wyjątkiem wszystkiego, co system operacyjny robi sam, aby ustawić różne parametry i poprawnie „skonfigurować” kontekst). Tak więc, odkładając na bok problemy z pamięcią / wydajnością (np. Trzymanie odniesień do kontekstu, gdy nie jest to konieczne lub robiąc to w sposób, który ma negatywne konsekwencje dla pamięci itp.), Kontekst jest obiektem jak każdy inny i można go przekazywać tak jak każdy POJO (Plain Old Java Object). Czasami może być konieczne robienie sprytnych rzeczy w celu odzyskania tego kontekstu, ale każdą zwykłą klasę Java, która nie składa się z niczego poza samym obiektem, można napisać w sposób umożliwiający dostęp do kontekstu; po prostu ujawnij metodę publiczną, która przyjmuje kontekst, a następnie użyj jej w tej klasie w razie potrzeby.
źródło
Kontekst jest uchwytem systemu; zapewnia usługi takie jak rozwiązywanie problemów, uzyskiwanie dostępu do baz danych i preferencji itp. Aplikacja na Androida ma działania. Kontekst jest jak uchwyt do środowiska, w którym aktualnie działa aplikacja. Obiekt aktywności dziedziczy obiekt Context.
Aby uzyskać więcej informacji, zapoznaj się z tematem Wprowadzenie do tworzenia Androida za pomocą Android Studio - samouczek .
źródło
Context
to „interfejs” do globalnej informacji o środowisku aplikacji. W praktyceContext
jest to w rzeczywistości klasa abstrakcyjna , której implementację zapewnia system Android.Umożliwia dostęp do zasobów i klas specyficznych dla aplikacji, a także wezwań do wykonywania operacji na poziomie aplikacji, takich jak uruchamianie działań, nadawanie i odbieranie zamiarów itp.
Na poniższym obrazku widać hierarchię klas, w której
Context
znajduje się klasa główna tej hierarchii. W szczególności warto podkreślić, żeActivity
jest potomkiemContext
.źródło
Co
Context
dokładnieZ książki „ Android in Practice ”, str. 60
Kilka interfejsów API Androida wymaga
Context
parametru jakoJeśli przejrzysz różne interfejsy API Androida, zauważysz, że wiele z nich przyjmuje
android.content.Context
obiekt jako parametr. Zobaczysz również, że Aktywność lub Usługa jest zwykle używana jakoContext
. Działa to, ponieważ obie te klasy rozciągają się odContext
.źródło
Prosty przykład do zrozumienia
context
w Androidzie:Każdy szef ma asystenta do opieki, który wykonuje wszystkie mniej ważne i czasochłonne zadania. Jeśli potrzebny jest plik lub filiżanka kawy, asystent jest w biegu. Niektórzy szefowie ledwo wiedzą, co się dzieje w biurze, dlatego też pytają o to swoich asystentów. Sami wykonują trochę pracy, ale w większości przypadków potrzebują pomocy swoich asystentów.
W tym scenariuszu,
Szef - to aplikacja na Androida
Asystent - jest kontekstem
Pliki / Filiżanka kawy - są zasobami
Zazwyczaj nazywamy kontekst, gdy potrzebujemy informacji o różnych częściach naszej aplikacji, takich jak działania, aplikacje itp.
Niektóre operacje (rzeczy, w których potrzebny jest asystent), w których występuje kontekst:
Różne sposoby uzyskania kontekstu:
źródło
Kontekst Androida to interfejs (w sensie ogólnym, nie w sensie Java; w Javie
Context
jest tak naprawdę klasą abstrakcyjną!), Który umożliwia dostęp do zasobów specyficznych dla aplikacji oraz klasy i informacji o środowisku aplikacji.Gdyby twoja aplikacja na Androida była aplikacją internetową, twój kontekst byłby podobny do
ServletContext
(tutaj nie robię dokładnego porównania).Twoje działania i usługi również się rozszerzają
Context
, więc dziedziczą wszystkie te metody dostępu do informacji o środowisku, w którym działa aplikacja.źródło
Context
reprezentuje uchwyt do uzyskania danych środowiska.Context
sama klasa jest zadeklarowana jako abstrakcyjna, której implementację zapewnia system operacyjny Android.Context
jest jak pilot telewizora, a kanałem w telewizji są zasoby, usługi itp.Co możesz z tym zrobić?
Sposoby uzyskania kontekstu:
getApplicationContext()
getContext()
getBaseContext()
źródło
Po prostu udostępniam go początkującym;
Najpierw zrozumcie kontekst słów:
W języku angielskim-lib. to znaczy:
Teraz weź to samo zrozumienie do świata programowania:
kontekst bieżącego stanu aplikacji / obiektu. Pozwala nowo utworzonym obiektom zrozumieć, co się dzieje. Zwykle wywołuje się go, aby uzyskać informacje dotyczące innej części programu (aktywność, pakiet / aplikacja)
Możesz uzyskać kontekst, wywołując
getApplicationContext()
,getContext(), getBaseContext()
lubthis
(gdy jesteś w klasie aktywności).Aby uzyskać kontekst w dowolnym miejscu aplikacji, użyj następującego kodu:
Utwórz nową klasę
AppContext
w aplikacji na AndroidaTeraz za każdym razem, gdy chcesz kontekst aplikacji w klasie niedziałającej, wywołaj tę metodę i masz kontekst aplikacji.
Mam nadzieję, że to pomoże ;)
źródło
Pomyśl o tym jak o maszynie wirtualnej, która wyciszyła proces, w którym działa aplikacja lub usługa. Środowisko wyciszone ma dostęp do szeregu podstawowych informacji systemowych i niektórych dozwolonych zasobów. Potrzebujesz tego kontekstu, aby uzyskać dostęp do tych usług.
źródło
Kontekst jest odniesieniem do bieżącego obiektu. Również kontekst umożliwia dostęp do informacji o środowisku aplikacji.
źródło
Klasa
android.content.Context
zapewnia połączenie z systemem Android i zasobami projektu. Jest to interfejs do globalnych informacji o środowisku aplikacji.Kontekst zapewnia również dostęp do usług Android, np. Usługi lokalizacji.
Zajęcia i usługi rozszerzają
Context
klasę.źródło
Kontekst to Instancje klasy android.content.Context zapewniają połączenie z systemem Android, który wykonuje aplikację. Na przykład możesz sprawdzić rozmiar bieżącego wyświetlacza urządzenia za pomocą kontekstu.
Daje również dostęp do zasobów projektu. Jest to interfejs do globalnych informacji o środowisku aplikacji.
Klasa Context zapewnia również dostęp do usług systemu Android, np. Menedżera alarmów w celu wyzwalania zdarzeń opartych na czasie.
Działania i usługi rozszerzają klasę Context. Dlatego można ich bezpośrednio użyć do uzyskania dostępu do kontekstu.
źródło
Kontekst jest interfejsem do globalnych informacji o środowisku aplikacji. Jest to klasa abstrakcyjna, której implementację zapewnia
Android
system.Context
umożliwia dostęp do zasobów i klas specyficznych dla aplikacji, a także wezwań do operacji na poziomie aplikacji, takich jaklaunching activities, broadcasting and receiving intents, etc.
Oto przykład
Aby uzyskać więcej informacji, odwiedź http://developer.android.com/reference/android/content/Context.html
źródło
Kontekst służy przede wszystkim do uzyskiwania dostępu do zasobów i uzyskiwania szczegółowych informacji o środowisku aplikacji (w kontekście aplikacji) lub działania (w kontekście działania) lub dowolnego innego ...
Aby uniknąć wycieku pamięci, należy użyć kontekstu aplikacji dla każdego komponentu, który potrzebuje obiektu kontekstu .... aby uzyskać więcej kliknij tutaj
źródło
Kontekst jest kontekstem bieżącego stanu aplikacji / obiektu. Jest to jednostka reprezentująca różne dane środowiska. Kontekst pomaga bieżącej aktywności współdziałać z zewnętrznym środowiskiem Androida, takim jak lokalne pliki, bazy danych, moduły ładujące klasy powiązane ze środowiskiem, usługi, w tym usługi na poziomie systemu i inne.
Kontekst jest uchwytem systemu. Zapewnia usługi takie jak rozwiązywanie problemów, uzyskiwanie dostępu do baz danych i preferencji itp. Aplikacja na Androida ma działania. To jak uchwyt środowiska, w którym aktualnie działa twoja aplikacja. Obiekt aktywności dziedziczy obiekt Context.
Różne metody wywoływania, za pomocą których można uzyskać kontekst 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. lub ten (gdy jest w klasie aktywności).
źródło
Kontekst oznacza, że Android dowiaduje się, w której działalności powinienem się podjąć lub w której powinienem działać.
1 -
Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show();
wykorzystano w tym.Context context = ActivityName.this;
2 -
startActivity(new Intent(context,LoginActivity.class));
w tym kontekście oznacza, z którego działania chcesz przejść do innego działania. kontekst lub nazwa_działania. jest to szybsze, więc getContext i getApplicatinContext.
źródło
A
Context
to, co większość z nas nazywa aplikacją . Jest wykonany przez system Android i może robić tylko to, co potrafi aplikacja. W Tomcat kontekst to także to, co nazwałbym aplikacją.Istnieje jeden kontekst, który zawiera wiele działań, każde działanie może mieć wiele widoków.
Oczywiście, niektórzy powiedzą, że nie pasuje z tego czy innego powodu i prawdopodobnie mają rację, ale powiedzenie, że Kontekst jest twoją bieżącą aplikacją, pomoże ci zrozumieć, co wstawiasz w parametrach metody.
źródło
Analogia Boss Assistant
Miejmy małą analogię przed zanurzeniem się głęboko w technice kontekstu
Co oficjalna strona programisty Androida mówi o kontekście
Kontekst jest punktem dostępu do zasobów związanych z aplikacją
Zobaczmy niektóre z takich zasobów lub zadań
Rozpoczęcie działalności.
Uzyskiwanie bezwzględnej ścieżki do katalogu pamięci podręcznej specyficznej dla aplikacji w systemie plików.
Ustalanie, czy dane uprawnienie jest dozwolone dla określonego procesu i identyfikatora użytkownika uruchomionego w systemie.
Sprawdzanie, czy przyznano określone uprawnienia.
I tak dalej.
Więc jeśli aplikacja na Androida chce rozpocząć działanie, przechodzi bezpośrednio do
Context
(Access Point), aContext
klasa zwraca mu zasoby (w tym przypadku Intencja).Jak każda inna klasa
Context
również ma pola i metody.Możesz dowiedzieć się więcej na temat
Context
oficjalnej dokumentacji, która obejmuje prawie wszystko, dostępne metody, pola, a nawet jak używać pól z metodami.źródło
Wystąpienia klasy android.content.Context zapewniają połączenie z systemem Android, który wykonuje aplikację. Na przykład możesz sprawdzić rozmiar bieżącego wyświetlacza urządzenia za pomocą kontekstu.
Daje również dostęp do zasobów projektu. Jest to interfejs do globalnych informacji o środowisku aplikacji.
Klasa Context zapewnia również dostęp do usług systemu Android, np. Menedżera alarmów w celu wyzwalania zdarzeń opartych na czasie.
Działania i usługi rozszerzają klasę Context. Dlatego można ich bezpośrednio użyć do uzyskania dostępu do kontekstu.
źródło
Jeśli chcesz połączyć kontekst z innymi znanymi klasami w Androidzie, pamiętaj o tej strukturze:
Tak więc wszystkie te klasy są kontekstami na swój sposób. Jeśli chcesz, możesz przesłać usługę i ListActivity do kontekstu . Ale jeśli przyjrzysz się uważnie, niektóre klasy również dziedziczą motyw. W działaniu lub fragmencie chciałbyś, aby temat był stosowany do twoich widoków, ale nie przejmuj się nim na przykład klasa usług .
I wyjaśnić różnicę w kontekstach tutaj .
źródło
Mówiąc prościej, Androidy
Context
to bałagan, którego nie pokochasz, dopóki nie przestaniesz się martwić.Android
Context
to:Boskie przedmioty.
Rzecz, którą chcesz przekazać wszystkim aplikacjom, gdy zaczynasz programować dla Androida, ale unikniesz tego, gdy zbliżysz się do programowania, testowania i samego Androida.
Niejasna zależność.
Wspólne źródło wycieków pamięci.
PITA do testowania.
Rzeczywisty kontekst wykorzystywany przez system Android do wysyłania uprawnień, zasobów, preferencji, usług, emisji, stylów, wyświetlania okien dialogowych i nadmuchiwania układu. I potrzebujesz różnych
Context
instancji dla niektórych osobnych rzeczy (oczywiście nie możesz wyświetlić okna dialogowego z kontekstu aplikacji lub usługi; układy napompowane z kontekstów aplikacji i działań mogą się różnić).źródło
Kontekst to specyficzny dla Androida interfejs API dla każdej aplikacji Sandbox, który zapewnia dostęp do prywatnych danych aplikacji, takich jak zasoby, baza danych, prywatne katalogi plików, preferencje, ustawienia ...
Większość danych prywatnych jest taka sama dla wszystkich działań / usług / nadawców jednej aplikacji.
Ponieważ aplikacja, działanie, usługa implementują interfejs kontekstowy, można ich używać tam, gdzie wywołanie interfejsu API wymaga parametru kontekstowego
źródło
Context
oznacza komponent (lub aplikację) w różnych przedziałach czasowych. Jeśli zjem tak dużo jedzenia między 13.00 a 14.00, wówczas mój kontekst tego czasu służy do uzyskania dostępu do wszystkich metod (lub zasobów), z których korzystam w tym czasie. Treść jest składnikiem (aplikacją) na określony czas.Context
komponentów aplikacji ciągle się zmienia w zależności od podstawowego cyklu życia komponentów lub aplikacji. Na przykład, wewnątrz onCreate (przekazania)Activity
,getBaseContext()
- dajecontext
zActivity
który jest ustawiony (stworzony) przez konstruktora aktywności.getApplicationContext()
- dajeContext
ustawienia (utworzone) podczas tworzenia aplikacji.Uwaga:
<application>
zawiera wszystkie komponenty Androida.Oznacza to, że gdy dzwonisz
getApplicationContext()
z dowolnego komponentu, wywołujesz wspólny kontekst całej aplikacji.Context
system jest ciągle modyfikowany w oparciu o cykl życia komponentów.źródło
Pomyśl o kontekście jako polu z różnymi zasobami: ciągiem, kolorami i czcionkami. Jeśli potrzebujesz zasobu, zwróć się do tego pola. Po obróceniu ekranu to pole zmienia się, ponieważ orientacja zmienia się na poziomą.
źródło
Context
oznacza prąd.Context
Użyj, aby wykonać operację dla bieżącego ekranu. dawny.1. getApplicationContext ()
2. getContext ()
źródło
Świetne wyjaśnienia! Aby uzupełnić wszystkie powyższe, uważam, że ten z MindOrks jest bardzo pomocny, a nawet pokazuje kilka podstawowych przypadków użycia, które pomogą ci uruchomić umysł:
Zrozumienie kontekstu w aplikacji na Androida
źródło
W Javie mówimy, że to słowo kluczowe odnosi się do stanu bieżącego obiektu aplikacji.
Podobnie mamy alternatywnego
Context
w Android Development.Można to zdefiniować jawnie lub pośrednio,
źródło
this
działa tylko w działaniach. Kontekst nie jest alternatywą dla „tego” - kontekst służy do uzyskiwania dostępu do funkcji systemu i wiele więcej. Nadmiernie upraszczasz Kontekst i brakuje mu głównego punktu.Ten atrybut określa, z jaką aktywnością domyślnie jest powiązany ten układ .
źródło