2011-07-28 10 views
87

Jaka jest różnica pomiędzy:getApplicationContext(), getBaseContext(), getApplication(), getParent()

  1. getApplicationContext()
  2. getBasecontext()
  3. getApplication()
  4. getParent()

Can rozwijasz jeden prosty przykład?

+1

proszę przejść przez http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-metod-do-get-a-context, które definiują to samo również http://developer.android.com/reference/android/content/Context.html –

Odpowiedz

29

Kontekst aplikacji jest powiązany z Aplikacją i zawsze będzie taki sam przez cały cykl życia. Nie należy używać

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

+14

co z getApplication() i getParent() –

97

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

getBasecontext() nie powinien być używany, wystarczy użyć kontekstu zamiast tego, który jest powiązany z działaniem i może zostać zniszczony, gdy działanie zostanie zniszczone.

getApplication() jest dostępny tylko dla działalności i usług. Mimo że w bieżących implementacjach usług i implementacji systemu Android, getApplication() i getApplicationContext() zwraca ten sam obiekt, nie ma gwarancji, że tak będzie zawsze (na przykład w konkretnej implementacji dostawcy). Jeśli więc chcesz zarejestrować klasę Aplikacji w Manifeście, nie powinieneś nigdy dzwonić pod numer getApplicationContext() i przesyłać go do swojej aplikacji, ponieważ może to nie być instancja aplikacji (której oczywiście doświadczałeś w ramach testu).

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

+15

Jak już wspomniano, nie powinniśmy używać getBaseContext(), jeśli to nie jest tak ważne, to dlaczego to jest w kodowaniu i jakie są jego główne zalety. proszę o szczegóły, proszę mi to opisać: –

+0

getBaseContext() powinno być używane w bardzo specyficznych sytuacjach. Tutaj jest bardzo dobre wytłumaczenie - https://medium.com/@ali.muzaffar/which-context-should-i-use-in-android-e3133d00772c – lomza

Powiązane problemy