getApplicationContext (), getBaseContext (), getApplication (), getParent ()

Odpowiedzi:

33

getApplicationContext() Kontekst aplikacji jest powiązany z aplikacją i zawsze będzie taki sam przez cały cykl życia.

getBasecontext()nie powinien być używany, po prostu użyj Contextzamiast niego, co jest związane z działaniem i może zostać zniszczone, gdy działanie zostanie zniszczone.

Harinder
źródło
16
a co z getApplication () i getParent ()
Nikunj Patel,
107

getApplicationContext () Kontekst aplikacji jest powiązany z aplikacją i zawsze będzie taki sam przez cały cykl życia.

getBasecontext ()Nie należy używać , wystarczy użyć zamiast niego kontekstu, który jest powiązany z działaniem i może zostać zniszczony, gdy działanie zostanie zniszczone.

Funkcja getApplication () jest dostępna tylko dla Aktywności i Usług. Chociaż w obecnych implementacjach działań i usług systemu Android metody getApplication () i getApplicationContext () zwracają ten sam obiekt, nie ma gwarancji, że tak będzie zawsze (na przykład w implementacji określonego dostawcy). Jeśli więc chcesz, aby klasa Application zarejestrowana w Manifeście, nigdy nie wywoływała metody getApplicationContext () i rzutować jej na swoją aplikację, ponieważ może to nie być instancja aplikacji (czego oczywiście doświadczyłeś we frameworku testowym).

getParent () zwraca obiekt działania, jeśli bieżący widok jest podrzędny. Innymi słowy zwraca obiekt działania zawierający widok podrzędny, gdy jest wywoływany w obrębie dziecka.

Ravi
źródło
16
Jak wspomniałeś, nie powinniśmy używać getBaseContext (), jeśli nie jest to aż tak ważne, to dlaczego jest w kodowaniu i jakie są jego główne zalety. proszę, opowiedz mi o tym
Pir Fahim Shah
getBaseContext () powinno być używane w bardzo specyficznych sytuacjach. Jest tutaj bardzo dobre wyjaśnienie - medium.com/@ali.muzaffar/…
lomza