Android Intent Context Confusing

Czy ktoś może mi to wyjaśnić proszę :

Intent intent = new Intent(Context, AlarmReceiver.class);

Nigdy nie rozumiałem i naprawdę myślę, że nigdy nie zrozumiem, jeśli ktoś nie spróbuje mi tego dogłębnie wyjaśnić. Ten cały kontekst jest dla mnie taki zagmatwany. Czasami działa to tak:

Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);

Czasami nie działa tak, ale akceptuje tylko :

    Intent intent = new Intent(context, AlarmReceiver.class);

Czasami jego:

Intent intent = new Intent(this, AlarmReceiver.class);

Itd. itd. i wiele innych.

Rozumiem podstawy kontekstu, ale ile ich jest? I dlaczego eclipse rzucić mi błąd raz i innym razem jest w porządku? Dlaczego musimy czasem deklarować kontekst? :

Context context;

Nie jestem w stanie znaleźć odpowiedniego kontekstu dla wszystkich sytuacji skąd mam wiedzieć, co jest właściwe w każdej sytuacji?

Author: user1880779, 2013-02-02

3 answers

Przede wszystkim pozwól mi wyjaśnić, co kontekst jest nieco lepszy, a następnie przejdźmy do tego, jak można go używać i odbierać. Zasadniczo kontekst jest odniesieniem do łączenia zasobów z programem. Każdy obiekt ma swój własny kontekst, który zawiera zasoby wymagane do skonfigurowania tego obiektu. Wymagane jest, aby wiele obiektów zostało utworzonych, a także aby uzyskać informacje identyfikujące program, między innymi. To sprawia, że nieocenione jest tworzenie nowych poglądów i działań, ale może być również wykorzystywane do innych celów. Zobacz również Ta odpowiedź aby uzyskać więcej informacji.

Kontekst elementu może pochodzić z różnych miejsc. Czasami jest przechowywany i musi zostać odzyskany, czasami jest dziedziczony. Zasadniczo jest to programowanie obiektowe.

Podam tylko kilka przykładów:

Activity dziedziczy kontekst. Tak więc, jeśli jesteś w działalności, trzeba tylko przejść się do korzystania z kontekstu. Zawiera również wskaźnik do getBaseContext(). Ty czasami może być konieczne odniesienie się do tego, jeśli potrzebujesz całego kontekstu aplikacji, ale najprawdopodobniej nie będzie to przez jakiś czas.

Widok nie dziedziczy kontekstu. Jednak posiada metodę getContext () . Jeśli potrzebujesz uzyskać kontekst z widoku, jest to sposób, aby go uzyskać. Kontekst ten nie będzie kompletny, ale będzie miał tylko kontekst dla zawartości widoku.

Fragmenty również nie dziedziczą kontekstu. Zawierają metodę getActivity () , które jeśli Fragment jest aktywny, zwróci aktywność, która jest kontekstem dla fragmentu.

BroadcastReceivers również nie dziedziczy kontekstu. W rzeczywistości w ogóle nie zawierają kontekstu, ale po prostu otrzymują bieżący kontekst, gdy zdarzenie jest odbierane (np. onReceive (Context context, Intent intent))

 59
Author: PearsonArtPhoto,
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-05-23 10:31:32

Możliwości Kontekstu

Typowe działania, które można bezpiecznie wykonać z danym obiektem kontekstowym, zależą od tego, skąd pochodzi. Poniżej znajduje się tabela wspólnych miejsc, w których aplikacja otrzyma kontekst i w każdym przypadku do czego jest przydatna:

Tutaj wpisz opis obrazka

  1. Aplikacja może rozpocząć działanie stąd, ale wymaga utworzenia nowego zadania. Może to pasować do konkretnych przypadków użycia, ale może tworzyć niestandardowe zachowania stosu wstecznego w Twoim zastosowanie i ogólnie nie jest zalecane lub uważane za dobrą praktykę.
  2. to jest legalne, ale inflacja zostanie wykonana z domyślnym motywem dla systemu, na którym jesteś uruchomiony, a nie tym, co jest zdefiniowane w Twojej aplikacji.
  3. dozwolone, jeśli odbiornik ma wartość null, która jest używana do uzyskania bieżącej wartości lepkiej transmisji, na Androidzie 4.2 i nowszych.

Oryginalny artykuł tutaj .

 7
Author: Cheese Bread,
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-08-04 19:28:10

To, co rozumiem za pomocą kontekstu, to environment.In proste terminy kontekst to otoczenie anything.So kiedy używasz jakiejkolwiek formy kontekstu, musisz zdecydować, jakie powinno być otoczenie rzeczy, dla których używasz kontekstu.

Na przykład, jeśli chcesz, aby niektóre dane lub pola pozostały przez aplikację, powinieneś zdefiniować je w klasie aplikacji.

Teraz, gdy otrzymasz kontekst aplikacji w którymkolwiek z komponentów aplikacji, to pole, które zadeklarowałeś w klasie aplikacji, będzie w Twoim kontekście.Stąd możesz uzyskać do niego dostęp.

To samo dotyczy wszystkich typów kontekstowych.

Jeśli kiedykolwiek spróbujesz użyć alertDialog w komponencie service, używając kontekstu "this".Spróbuj tego, a założę się, że na pewno dostaniesz wyjątek, ponieważ "to" reprezentuje środowisko obsługi, gdy jest w nim używane.A ponieważ jest to komponent tła, nie możemy dodać do niego okna.Stąd powie Ci zły wyjątek tokena.Czyli token generowany dla widok otaczający nie jest odpowiedni do wyświetlania alertDialog.

Mam nadzieję, że to da ci krótkie pojęcie, czego chcesz.

 5
Author: kaushal trivedi,
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-02-02 08:07:15