Co to jest "kontekst" na Androida?

W programowaniu Androida, czym dokładnie jest klasa Context i do czego jest używana?

Czytałem o tym na stronie dewelopera, ale nie jestem w stanie zrozumieć tego jasno.

Author: naXa, 2010-08-26

30 answers

Mówiąc prościej:

Jak sama nazwa wskazuje, jest to kontekst bieżącego stanu aplikacji / obiektu. Pozwala nowo utworzonym obiektom zrozumieć, co się dzieje. Zazwyczaj wywołujesz go, aby uzyskać informacje dotyczące innej części programu (aktywności i pakietu/aplikacji).

Możesz uzyskać kontekst, wywołując getApplicationContext(), getContext(), getBaseContext() lub this (gdy w klasie, która rozciąga się od Context, takiej jak aplikacja, aktywność, usługa i IntentService klas).

Typowe zastosowania kontekstu:

  • Tworzenie nowych obiektów : Tworzenie nowych widoków, adapterów, słuchaczy:

    TextView tv = new TextView(getContext());
    ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
    
  • Dostęp do standardowych wspólnych zasobów : Usługi takie jak LAYOUT_INFLATER_SERVICE, SharedPreferences:

    context.getSystemService(LAYOUT_INFLATER_SERVICE)
    getApplicationContext().getSharedPreferences(*name*, *mode*);
    
  • Accessing components implicite : Jeśli chodzi o dostawców treści, transmisje, intencje

    getApplicationContext().getContentResolver().query(uri, ...);
    
 1574
Author: Sameer Segal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 17:15:42

Definicja kontekstu

  • Context represents environment data
  • zapewnia dostęp do takich rzeczy jak bazy danych

Prostsze terminy (przykład 1)

  • Person-X jest prezesem firmy zajmującej się tworzeniem oprogramowania.

  • W firmie obecny jest główny architekt, ten główny architekt wykonuje wszystkie prace w firmie, które obejmują takie jak bazy danych, UI itd.

  • Teraz prezes Zatrudni nowego dewelopera.

  • To Architekt mówi o odpowiedzialności nowo zatrudnionego osoba na podstawie umiejętności nowej osoby, że czy będzie praca na bazie danych lub UI itp.

Prostsze terminy (przykład 2)

  • To jak dostęp do aktywności Androida do zasobów aplikacji.

  • To podobne do tego, kiedy odwiedzasz hotel, chcesz śniadanie, lunch & Kolacja w odpowiednim terminie, prawda?

  • Jest wiele innych rzeczy, które lubisz w czasie pobytu. Skąd je masz?
  • Poproś obsługę hotelową, żeby przyniosła ci te rzeczy.
  • Tutaj osoba do obsługi pokoju jest kontekstem biorąc pod uwagę, że jesteś pojedyncza aktywność i hotel, który będzie Twoją aplikacją, wreszcie śniadanie, lunch & kolacja musi być źródłem.


Rzeczy, które wiążą się z kontekstem są:

  1. Ładowanie zasobu.
  2. rozpoczęcie nowej działalności.
  3. tworzenie widoków.
  4. uzyskanie usługi systemowej.

Context jest klasą bazową dla Activity, serwis, Zastosowanie , itd

Innym sposobem na opisanie tego: Rozważ kontekst jako odległy od telewizora i kanału w telewizji są zasoby, usługi, wykorzystanie intencji, itp - - - Tutaj zdalne działa jako dostęp, aby uzyskać dostęp do wszystkich różnych zasobów na pierwszym planie.

  • Tak więc zdalny ma dostęp do kanałów takich jak zasoby, usługi, wykorzystanie intencji itp ....

  • wzajemnie ... Każdy, kto ma dostęp do zdalnego w naturalny sposób ma dostęp do wszystkich rzeczy, takich jak zasoby, usługi, korzystanie z intencji, itp {23]}


Różne metody, za pomocą których można uzyskać kontekst

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • lub this (gdy w klasie aktywności)

przykład:

TextView tv = new TextView(this);

Słowo kluczowe this odnosi się do kontekstu bieżącej aktywności.

 533
Author: Devrath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-07 15:02:28

Źródło


[57] temat kontekstu w Androidzie wydaje się być mylący dla wielu. Ludzie po prostu wiedzą, że kontekst jest potrzebny dość często, aby robić podstawowe rzeczy w Androidzie. Ludzie czasami panikują, ponieważ próbują wykonać jakąś operację, która wymaga kontekstu i nie wiedzą, jak" uzyskać " odpowiedni kontekst. Mam zamiar spróbować demystify pomysł kontekstu w Androidzie. Pełne potraktowanie problemu wykracza poza zakres tego postu, ale postaram się podać ogólne przegląd, abyś miał poczucie, jaki jest kontekst i jak go używać. Aby zrozumieć, jaki jest kontekst, spójrzmy na kod źródłowy: [60]}

Https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/Context.java

Czym dokładnie jest kontekst?

Cóż, sama dokumentacja dostarcza dość prostego wyjaśnienia: Klasa Context jest " interfejsem do globalnych informacji o aplikacji środowisko".

Sama klasa Context jest zadeklarowana jako klasa abstrakcyjna, której implementacja jest dostarczana przez system operacyjny Android. Dokumentacja dalej przewiduje, że kontekst "... umożliwia dostęp do zasobów i klas specyficznych dla aplikacji, a także wzywa do operacji na poziomie aplikacji, takich jak uruchamianie działań, nadawanie i odbieranie intencji, itp".

Możesz teraz bardzo dobrze zrozumieć, dlaczego nazwa jest kontekstem. To dlatego, że tak po prostu. Kontekst zapewnia link lub hook, jeśli chcesz, dla aktywności, usługi lub innego komponentu, łącząc go w ten sposób z systemem, umożliwiając dostęp do globalnego środowiska aplikacji. Innymi słowy: kontekst zapewnia odpowiedź na pytanie " gdzie do cholery jestem w odniesieniu do aplikacji ogólnie 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 natura.

Oto losowe próbkowanie tych metod:

  1. getAssets()
  2. getResources()
  3. getPackageManager()
  4. getString()
  5. getSharedPrefsFile()

Co te wszystkie metody mają ze sobą wspólnego? Wszystkie one umożliwiają każdemu, kto ma dostęp do kontekstu, dostęp do zasobów całej aplikacji.

Context, innymi słowy, łączy komponent, który ma odniesienie do niego, z resztą środowiska aplikacji. Assets (think '/assets' folder in your projekt), na przykład, są dostępne w całej aplikacji, pod warunkiem, że działanie, usługa lub cokolwiek wie, jak uzyskać dostęp do tych zasobów. To samo dotyczy getResources(), która pozwala nam robić rzeczy takie jak getResources().getColor(), które podłączą Cię do zasobu colors.xml (nieważne, że aapt umożliwia dostęp do zasobów za pomocą kodu java, to osobny problem).

Wynikiem jest to, że Context jest to, co umożliwia dostęp do zasobów systemowych i to, co łączy komponenty do "większej aplikacji". Spójrzmy na podklasy Context, klasy, które zapewniają implementację klasy abstrakcyjnej Context. Najbardziej oczywistą klasą jest klasa Activity. Activity dziedziczy z ContextThemeWrapper, który dziedziczy z ContextWrapper, który dziedziczy z Context. Te zajęcia są przydatne, aby zrozumieć rzeczy na głębszym poziomie, ale na razie wystarczy wiedzieć, że ContextThemeWrapper i ContextWrapper są w zasadzie tym, jak brzmią. Implementują abstrakcyjne elementy samej klasy Context poprzez "zawijanie" kontekstu (rzeczywisty kontekst) i delegowanie tych funkcji do tego kontekstu. Przykład jest pomocny - w klasie ContextWrapper, metoda abstrakcyjna getAssets z klasy Context jest zaimplementowana w następujący sposób:

@Override
    public AssetManager getAssets() {
        return mBase.getAssets();
    }

mBase jest po prostu zestawem pól przez konstruktor do określonego kontekstu. Tak więc kontekst jest zawinięty i ContextWrapper deleguje swoją implementację metody getAssets do tego kontekstu. Wróćmy do zbadania klasy Activity, która ostatecznie dziedziczy po Context, aby zobaczyć, jak to wszystko działa.

Prawdopodobnie wiesz, co to jest aktywność, ale przegląd - to w zasadzie ' jedna rzecz, którą użytkownik może zrobić. Dba o zapewnienie okna, w którym można umieścić UI, z którym użytkownik wchodzi w interakcję'. Programiści zaznajomieni z innymi interfejsami API, a nawet nie-programiści, mogą myśleć o nim potocznie jako o "ekranie"."Jest to technicznie niedokładne, ale nie ma to znaczenia dla naszych celów. Jak więc Activity i Context współdziałają i co dokładnie dzieje się w ich relacji dziedzicznej?

[57]} ponownie, warto przyjrzeć się konkretnym przykładom. Wszyscy wiemy, jak rozpocząć działania. Pod warunkiem, że masz "kontekst", od którego rozpoczynasz aktywność, po prostu wywołujesz startActivity(intent), gdzie Intencja opisuje kontekst, od którego rozpoczynasz aktywność i aktywność, którą chcesz rozpocząć. To jest znane startActivity(this, SomeOtherActivity.class).

A czym jest this? this jest Twoją aktywnością, ponieważ Activity klasa dziedziczy z Context. Pełna wersja jest taka: kiedy dzwonisz startActivity, ostatecznie Activity Klasa wykonuje coś takiego:

Instrumentation.ActivityResult ar =
                mInstrumentation.execStartActivity(
                    this, mMainThread.getApplicationThread(), mToken, this,
                    intent, requestCode);

Więc wykorzystuje execStartActivity z klasy Instrumentation (właściwie z wewnętrznej klasy w Instrumentation o nazwie ActivityResult).

W tym momencie zaczynamy podglądać wnętrze systemu.

Tutaj system operacyjny zajmuje się wszystkim. W jaki sposób Oprzyrządowanie dokładnie rozpoczyna działanie? No cóż, param this w powyższej metodzie execStartActivity jest Twoim działaniem, czyli kontekstem, a execStartActivity sprawia, że wykorzystanie tego kontekstu.

Klasa oprzyrządowania przechowuje listę czynności, które monitoruje, aby wykonać swoją pracę. Ta lista jest używana do koordynowania wszystkich działań i upewnij się, że wszystko działa płynnie w zarządzaniu przepływem działań.

Są pewne operacje, które nie do końca przyjrzałem się zagadnieniom koordynowania wątków i procesów. Ostatecznie ActivityResult używa natywnej operacji - ActivityManagerNative.getDefault().startActivity(), która wykorzystuje Context, że wpadłeś, kiedy zadzwoniłeś. Kontekst, który przekazałeś, jest używany do pomocy w "intent resolution" w razie potrzeby. Intent resolution to proces, w którym system może określić cel intent, jeśli nie jest dostarczany. (Sprawdź przewodnik tutaj, aby uzyskać więcej szczegółów).

Aby Android mógł to zrobić, potrzebuje dostępu do informacji dostarczanych przez Context. W szczególności system musi uzyskać dostęp do ContentResolver, aby mógł "określić typ MIME danych intencji". Cały ten fragment o tym, jak startActivity wykorzystuje kontekst, był nieco skomplikowany i sam nie do końca rozumiem wewnętrzne aspekty. Moim głównym celem było tylko zilustrowanie, w jaki sposób należy uzyskać dostęp do zasobów w całej aplikacji, aby wykonać wiele operacji, które są niezbędne dla aplikacji. Context jest tym, co zapewnia dostęp do tych zasobów. Prostszym przykładem mogą być widoki. Wszyscy wiemy, co tworzysz Niestandardowy Widok rozszerzając RelativeLayout lub inną View klasę, musisz DOSTARCZYĆ konstruktor to bierze Context jako argument. Kiedy tworzysz własny 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 widoku jest świetnym przykładem. Każdy kontekst ma różne parametry (pola w implementacjach Context), które są ustawiane przez sam system operacyjny dla takich rzeczy, jak rozmiar lub gęstość wyświetlacza. Łatwo zrozumieć, dlaczego te informacje są ważne przy konfigurowaniu widoków, itd.

Ostatnie słowo: Z jakiegoś powodu ludzie nowi w Androidzie (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 wstępnie pomyślanych paradygmatów lub wyuczonych zachowań.

Android ma swój własny paradygmat i pewien wzór, który jest właściwie całkiem spójny, jeśli puścisz swoje uprzedzenia i po prostu przeczytaj dokumentację i dev przewodnik. Moja prawdziwa Uwaga, jednak, podczas gdy "uzyskanie właściwego kontekstu" może być czasami trudne, ludzie bezpodstawnie panikują, ponieważ wpadają w sytuację, w której potrzebują kontekstu i myślą, że go nie mają. Po raz kolejny Java jest językiem obiektowym o konstrukcji dziedziczenia.

Tylko "masz" kontekst wewnątrz swojej aktywności, ponieważ sama twoja aktywność dziedziczy z kontekstu. Nie ma w tym żadnej magii (poza tym wszystkim, co robi sam OS, aby ustawić różne parametry i poprawnie "skonfigurować" swój kontekst). Tak więc, pomijając problemy z pamięcią/wydajnością (np. trzymanie odniesień do kontekstu, gdy nie jest to konieczne lub robienie tego w sposób, który ma negatywne konsekwencje dla pamięci itp.), kontekst jest obiektem jak każdy inny i może być przekazywany tak jak każdy POJO (zwykły stary obiekt Java). Czasami trzeba zrobić sprytne rzeczy, aby odzyskać ten kontekst, ale każda zwykła Klasa Java, która rozciąga się z niczego innego niż sam obiekt, może być napisana w sposób które mają dostęp do kontekstu; po prostu ujawnij publiczną metodę, która bierze kontekst i używa go w danej klasie w razie potrzeby. Nie było to zamierzone jako wyczerpujące traktowanie kontekstu lub wewnętrznych systemów Android, ale mam nadzieję, że pomoże to trochę w demystyfikacji kontekstu.

 405
Author: Sourab Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-08 07:24:03

Kontekst to Uchwyt systemu; zapewnia usługi takie jak rozwiązywanie zasobów, uzyskiwanie dostępu do baz danych i preferencji itd. Aplikacja na Androida ma działania. Kontekst jest jak uchwyt do środowiska, w którym aktualnie działa Twoja aplikacja. Obiekt activity dziedziczy obiekt kontekstowy.

Aby uzyskać więcej informacji, zajrzyj do Wprowadzenie do rozwoju Androida z Android Studio-Tutorial.

 123
Author: angryITguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-29 01:27:56

Context jest "interfejsem" do globalnej informacji o środowisku aplikacji. W praktyce {[0] } jest w rzeczywistości klasą abstrakcyjną , której implementację zapewnia system Android.

Umożliwia dostęp do zasobów i klas specyficznych dla aplikacji, a także do operacji na poziomie aplikacji, takich jak uruchamianie działań, nadawanie i odbieranie intencji itp.

Na poniższym zdjęciu widać hierarchię klas, gdzie Context jest podstawową klasą tej hierarchii. W szczególności warto podkreślić, że {[3] } jest potomkiem Context.

Diagram aktywności

 92
Author: Dmytro Danylyk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-26 16:10:20

Co to jest Context dokładnie?

Zgodnie z dokumentacją referencyjną Androida, jest to jednostka reprezentująca różne dane środowiskowe. Zapewnia dostęp do plików lokalnych, baz danych, klas loaderów powiązanych ze środowiskiem, usług (w tym usług na poziomie systemu) i innych. W tej książce i w codziennym kodowaniu z Androidem zobaczysz często przekazywany kontekst.

Z książki" Android w praktyce ", str. 60.

Niektóre API Androida wymagają Context jako parametru

Jeśli przejrzysz różne API Androida, będziesz zauważ, że wiele z nich przyjmuje obiekt android.content.Context jako parametr. Zobaczysz również, że działanie lub usługa jest zwykle używana jako Context. Działa to, ponieważ obie te klasy rozciągają się od Context.

 71
Author: s0ld13r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-26 15:51:01

Prosty przykład do zrozumienia context w Androidzie:

Każdy szef ma asystenta do opieki, do wykonywania wszystkich mniej ważnych i czasochłonnych zadań. Jeśli potrzebny jest plik lub filiżanka kawy, asystent jest w biegu. Niektórzy szefowie ledwo wiedzą, co się dzieje w biurze, więc pytają o to swoich asystentów. Sami wykonują pewną pracę, ale do większości innych rzeczy potrzebują pomocy swoich asystentów.

W tym scenariuszu,

Boss - to Android Zastosowanie

Asystent - jest kontekstem

Files / Cup of coffee - are resources

Zazwyczaj nazywamy kontekstem, gdy potrzebujemy uzyskać informacje o różnych częściach naszej aplikacji, takich jak działania, aplikacje itp.

Niektóre operacje (rzeczy, w których asystent jest potrzebny), w których zaangażowany jest kontekst:

  • Ładowanie wspólnych zasobów
  • tworzenie dynamicznych widoków
  • Wyświetlanie wiadomości tostowych
  • uruchomienie Działania itp.

Różne sposoby uzyskania kontekstu:

getContext()

getBaseContext()

getApplicationContext()

this
 60
Author: Parsania Hardik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-24 10:35:44

Android Context jest interfejsem (w sensie ogólnym, Nie w sensie Javy; w Javie Context jest w rzeczywistości klasą abstrakcyjną!), który umożliwia dostęp do specyficznych dla aplikacji zasobów i klasy oraz informacji o środowisku aplikacji.

Jeśli Twoja aplikacja na Androida była aplikacją internetową, Twój kontekst byłby podobny do ServletContext (nie robię dokładnego porównania tutaj).

Twoje działania i usługi również rozszerzają Context, więc dziedziczą wszystkie te metody aby uzyskać dostęp do informacji o środowisku, w którym działa aplikacja.

 48
Author: naikus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-26 12:47:59
  • Context reprezentuje uchwyt do pobierania danych środowiskowych .
  • Context sama klasa jest zadeklarowana jako abstrakcyjna, której implementacja jest dostarczana przez system operacyjny android.
  • Context jest jak pilot TV & kanał w telewizji są zasoby, usługi, itp. Tutaj wpisz opis obrazka

Co możesz z tym zrobić ?

  • wczytywanie zasobów.
  • rozpoczęcie nowej działalności.
  • tworzenie widoków.
  • uzyskanie usługi systemowej.

Sposoby na get context:

  • getApplicationContext()
  • getContext()
  • getBaseContext()Tutaj wpisz opis obrazkaTutaj wpisz opis obrazka
 37
Author: AskNilesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-27 05:10:35

Tylko dla nowicjuszy;

Więc najpierw zrozum kontekst słowa:

W języku angielskim-lib. oznacza:

"okoliczności, które tworzą ustawienie dla zdarzenia, stwierdzenia lub pomysł, a pod względem którego można go w pełni zrozumieć i ocenić."

"części czegoś pisanego lub mówionego, które bezpośrednio poprzedzają i postępuj zgodnie ze słowem lub fragmentem i wyjaśnij jego znaczenie."

Teraz weź to samo zrozumienie do programowania world:

Kontekst bieżącego stanu aplikacji / obiektu. Pozwala nowo utworzonym obiektom zrozumieć, co się dzieje. Zazwyczaj wywołujesz go, aby uzyskać informacje dotyczące innej części Programu (Aktywności, pakietu/aplikacji)

Możesz uzyskać kontekst, wywołując getApplicationContext(), getContext(), getBaseContext() lub this (gdy w klasie aktywności).

Aby uzyskać kontekst w dowolnym miejscu w aplikacji, Użyj następującego kodu:

Utwórz nową klasę AppContext wewnątrz aplikacji na Androida

public class AppContext extends Application {

    private static Context context;

    public void onCreate(){
        super.onCreate();
        AppContext.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return AppContext.context;
    }
}

Teraz kiedy chcesz mieć kontekst aplikacji w klasie non-activity, wywołaj tę metodę i masz kontekst aplikacji.

Oby ta pomoc;)

 19
Author: star18bit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 23:41:08

Pomyśl o tym jak o maszynie wirtualnej, która unieruchomiła proces, w którym uruchomiona jest aplikacja lub usługa. Siloed środowiska ma dostęp do kilku podstawowych informacji systemowych i niektórych dozwolonych zasobów. Potrzebujesz tego kontekstu, aby dostać się do tych usług.

 17
Author: Erol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-06 20:26:27

Context jest odniesieniem do bieżącego obiektu. Również context umożliwia dostęp do informacji o środowisku aplikacji.

 17
Author: devdas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 18:59:30

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 Androida, np. usługi lokalizacji.

Działania i usługi rozszerzają klasę Context.

 14
Author: Yashvir yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-14 03:53:31

Context {[6] } jest interfejsem do globalnych informacji o środowisku aplikacji. Jest to klasa abstrakcyjna, której implementację dostarcza system Android.

Context umożliwia dostęp do zasobów i klas specyficznych dla aplikacji, a także wymaga operacji na poziomie aplikacji, takich jak launching activities, broadcasting and receiving intents, etc.

Oto przykład

 public class MyActivity extends Activity {

      public void Testing() {

      Context actContext = this; /*returns the Activity Context since   Activity extends Context.*/

      Context appContext = getApplicationContext();    /*returns the context of the single, global Application object of the current process. */

      Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
      Context BtnContext = BtnShowAct1.getContext();   /*returns the context of the View. */

Więcej szczegółów można znaleźć na stronie http://developer.android.com/reference/android/content/Context.html

 10
Author: IntelliJ Amiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-26 08:49:06

Context to instancje klasy android.treść.Context zapewnia połączenie z systemem Android, który wykonuje aplikację. Na przykład można sprawdzić rozmiar bieżącego wyświetlania 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 Androida, np. menedżera alarmów do wyzwalania w oparciu o czas wydarzenia.

Działania i usługi rozszerzają klasę Context. W związku z tym mogą być bezpośrednio wykorzystywane do uzyskania dostępu do kontekstu.

 9
Author: chandan kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 07:32:53

Kontekst jest w zasadzie dla dostępu do zasobów i uzyskania szczegółów środowiska aplikacji (dla kontekstu aplikacji) lub aktywności (dla kontekstu aktywności) lub innych...

Aby uniknąć wycieku pamięci, należy użyć kontekstu aplikacji dla każdego komponentu, który potrzebuje obiektu context.... więcej kliknij TUTAJ

 8
Author: Jaber Shabeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-16 05:59:46

Context jest kontekstem aktualnego stanu aplikacji / obiektu.Jest to jednostka, która reprezentuje różne dane środowiskowe . Kontekst pomaga bieżącej aktywności w interakcji z zewnętrznym środowiskiem Androida, takim jak pliki lokalne, bazy danych, Urządzenia ładujące klasy powiązane ze środowiskiem, usługi, w tym usługi na poziomie systemu i inne.

Kontekst jest uchwytem do systemu . Zapewnia usługi takie jak rozwiązywanie zasobów, uzyskiwanie dostępu do baz danych i preferencji itp. Na aplikacja na Androida ma działania. To jak uchwyt do środowiska, w którym aktualnie działa Twoja aplikacja. Obiekt activity dziedziczy obiekt kontekstowy.

Różne metody wywoływania, za pomocą których można uzyskać kontekst 1. getapplicationkontekst(), 2. getContext(), 3. getBaseContext() 4. lub to (gdy w klasie activity).

 8
Author: santoshpatmca,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-04 18:40:24

Kontekst oznacza, że Android dowiaduje się, w której aktywności powinienem iść lub działać.

1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show(); używany w tym. Context context = ActivityName.this;

2 -startActivity(new Intent(context,LoginActivity.class));

W tym kontekście oznacza, z której aktywności Chcesz przejść do innej aktywności. context lub ActivityName.jest to szybsze niż, getContext i getApplicatinContext.

 7
Author: Deven,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-14 16:51:26

A Context jest tym, co większość z nas nazwałaby aplikacją . Jest wykonany przez system Android i jest w stanie zrobić tylko to, co aplikacja jest w stanie. W Tomcat kontekst jest również tym, co nazwałbym aplikacją.

Jest jeden kontekst, który zawiera wiele działań, każde działanie może mieć wiele poglądów.

Oczywiście niektórzy powiedzą, że to nie pasuje z powodu tego lub tamtego i prawdopodobnie mają rację, ale powiedzenie, że kontekst jest Twoją obecną aplikacją pomoże Ci zrozumieć, co umieszczasz w parametrach metody.

 6
Author: Nicolas Zozol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 15:11:16

Analogia Asystenta Szefa

Zanim zanurzymy się w technice kontekstu, przyjrzyjmy się małej analogii.]}

Każdy szef ma asystenta lub kogoś (chłopca na posyłki), który robi mniej ważne i bardziej czasochłonne rzeczy dla niego. Na przykład, jeśli potrzebujesz pliku lub kawy, a asystent będzie uruchomiony. Szef nie będzie wiedzieć, co się dzieje w tle, ale plik lub zadanie będzie be delivered

Więc Tutaj
Boss-Android Zastosowanie
Assistant-Context
Plik lub filiżanka kawy-zasób

Co mówi oficjalna strona programisty Androida o kontekst

Context to twój punkt dostępu do zasobów związanych z aplikacjami

Zobaczmy niektóre z takich zasobów lub zadań

  • Rozpoczęcie działalności.

  • Uzyskanie bezwzględnej ścieżki do katalogu cache specyficznego dla aplikacji na system plików.

  • Określenie, czy dane uprawnienie jest dozwolone dla określonego procesu i identyfikatora użytkownika działającego w systemie.

  • Sprawdzanie, czy dany użytkownik otrzymał określone pozwolenie.

I tak dalej.
Więc jeśli aplikacja na Androida chce rozpocząć aktywność, przechodzi prosto do Context (Access Point), A klasa Context oddaje mu zasoby (Intencja w tym przypadku).

Jak każda inna klasa Context Klasa posiada pola i metody.
Możesz dowiedzieć się więcej o Context w oficjalnej dokumentacji, obejmuje ona prawie wszystko, dostępne metody, pola, a nawet jak używać pól z metodami.

 6
Author: Rohit Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-07 22:24:39

Instancje klasy android.treść.Context zapewnia połączenie z systemem Android, który wykonuje aplikację. Na przykład można sprawdzić rozmiar bieżącego wyświetlania 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 Androida, np. menedżera alarmów do wyzwalania w oparciu o czas wydarzenia.

Działania i usługi rozszerzają klasę Context. W związku z tym mogą być bezpośrednio wykorzystywane do uzyskania dostępu do kontekstu.

 5
Author: Mubarak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-02 11:33:28

Stawianie prostych androidów Context to bałagan, którego nie pokochasz, dopóki nie przestaniesz się martwić.

Android Context S to:

  • Bóg-obiekty.

  • Rzecz, którą chcesz przekazać całą swoją aplikację, gdy zaczynasz tworzyć dla Androida, ale unikniesz tego, gdy zbliżysz się trochę do programowania, testowania i samego Androida.

    • Niejasna zależność.

    • Wspólne źródło pamięci przecieki.

    • PITA do testów.

  • Rzeczywisty kontekst używany przez system Android do wysyłania uprawnień, zasobów, preferencji, usług, transmisji, stylów, wyświetlania okien dialogowych i zawyżania układu. I potrzebujesz różnych wystąpień Context dla niektórych oddzielnych rzeczy(oczywiście nie możesz wyświetlić okna dialogowego z kontekstu aplikacji lub usługi; układy zawyżone z kontekstu aplikacji i aktywności mogą się różnić).

 5
Author: Pavlus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-02 21:59:34

W zależności od tego, czy aplikacja jest używana, czy nie, można ją używać w dowolnym miejscu na świecie.]} zapewnia dostęp do prywatnych danych aplikacji, takich jak zasoby, baza danych, prywatne katalogi plików, Preferencje, Ustawienia ...

Większość privatedata są takie same dla wszystkich działań/usług / broadcastlisteners jednej aplikacji.

Ponieważ aplikacja, aktywność, usługa implementują interfejs kontekstowy, mogą być używane tam, gdzie wywołanie api wymaga parametru kontekstowego

 5
Author: k3b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-12 09:02:24

Jeśli chcesz połączyć Context z innymi znanymi klasami w Androidzie, pamiętaj o tej strukturze:

Context

Context

Context

Context

Context

Więc wszystkie te klasy są kontekstami na swój sposób. Możesz wrzucić Service i ListActivity do Context jeśli chcesz. Ale jeśli przyjrzysz się uważnie, niektóre z klas również dziedziczą temat. W activity lub fragment, chcesz, aby motyw był stosowany do Twoich widoków, ale nie obchodzi cię to, na przykład, klasa Service.

Wyjaśniam różnicę w kontekstach tutaj .

 4
Author: lomza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-14 10:08:16

Context oznacza komponent (lub aplikację) w różnych przedziałach czasowych. Jeśli jem tak dużo jedzenia między 13: 00 a 14: 00 wtedy mój kontekst tego czasu jest używany do uzyskania dostępu do wszystkich metod (lub zasobów), które używam w tym czasie. Treść jest składnikiem (aplikacją) na określony czas. Context składników aplikacji zmienia się w zależności od podstawowego cyklu życia komponentów lub aplikacji. Na przykład wewnątrz OnCreate () Activity,

getBaseContext() -- daje context z {[3] } który jest ustawiany (tworzony) przez konstruktor aktywności. getApplicationContext() -- wyświetla Context setup (created) podczas tworzenia aplikacji.

Uwaga: <application> zawiera wszystkie komponenty Androida.

<application>
    <activity> .. </activity> 

    <service>  .. </service>

    <receiver> .. </receiver>

    <provider> .. </provider>
</application> 

Oznacza to, że wywołując getApplicationContext() z dowolnego komponentu, wywołujesz wspólny kontekst całej aplikacji.

Context jest modyfikowany przez system w oparciu o cykl życia komponentów.

 4
Author: Uddhav Gautam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-07 21:04:52

Pomyśl o kontekście jako o polu z różnymi zasobami: ciągiem znaków, kolorami i czcionkami. Jeśli potrzebujesz zasobu, przejdź do tego pola. Po obróceniu ekranu To pole zmienia się, ponieważ orientacja zmienia się na poziomą.

 1
Author: Leonid Ivankin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-28 11:31:20

Context oznacza prąd. Context Użyj do wykonania operacji dla bieżącego ekranu. ex.
  1. getapplicationkontekst()
  2. getContext()

Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
 0
Author: Nikita Prajapati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 16:16:12

Aby uzyskać więcej informacji na temat kontekstu, przeczytaj Ten artykuł . Wyjaśnię to krótko.

Jeśli chcesz wiedzieć, co jest kontekstem, musisz wiedzieć, co robi...
na przykład getContext () jest jedną z metod pobierających kontekst. W getContext () kontekst jest powiązany z aktywnością i jej cyklem życia. Możemy wyobrazić sobie kontekst jako warstwę, która stoi za aktywnością i będzie żyć tak długo, jak żyje aktywność. W momencie, gdy aktywność umiera, kontekst również. ta metoda daje listę funkcji do działania, np.:
Load Resource Values,
Layout Inflation,
Start an Activity,
Show a Dialog,
Start a Service,
Bind to a Service,
Send a Broadcast,
Register BroadcastReceiver.

Wyobraź sobie, że:

Context jest warstwą (interfejsem), która stoi za jej komponentem (Aktywność, zastosowanie...) i cyklu życia komponentu, który zapewnia dostęp do różnych funkcjonalności obsługiwanych przez aplikację środowisko i Android framework.

 0
Author: Amir Ehsani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-15 10:02:48

W języku Java mówimy to słowo kluczowe odnosi się do stanu bieżącego obiektu aplikacji.
Podobnie, w alternatywnym mamy Context w rozwoju Androida.

To może być zdefiniowane jawnie lub niejawnie,

Context con = this;

getApplicationContext();

getBaseContext();

getContext();
 -7
Author: Gavine Joyce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 15:37:03

Ten atrybut domyślnie deklaruje, z którą aktywnością układ jest skojarzony .

 -10
Author: Saleem Kalro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-02 02:06:07