В чем разница между деятельностью и контекстом? - PullRequest
84 голосов
/ 29 июня 2011

Активность и контекст одинаковы или есть различия?

Когда мне нужно, чтобы метод передал Activity, а когда Context?

Ответы [ 2 ]

105 голосов
/ 29 июня 2011

Насколько я понимаю: Контекст - Базовый объект. Таким образом, каждое действие , такое же как и приложение , происходит из контекста. Это означает, что каждое действие и каждое Application является Context;

С developer.android.com Активность

java.lang.Object
  ↳ android.content.Context
      ↳ android.content.ContextWrapper
          ↳ android.view.ContextThemeWrapper
              ↳ android.app.Activity

А Применение

java.lang.Object
↳   android.content.Context
   ↳    android.content.ContextWrapper
       ↳    android.app.Application

Контекст приложения сохраняется до тех пор, пока ваше приложение живо, а контекст действия умирает вместе с вашим действием (он недействителен после onDestroy этого действия).

Так что, если вам нужен контекст для разных видов деятельности (т. Е. В синглтоне), вам будет лучше использовать контекст приложения.

Обычно в методах Android Framework, где ожидается контекст, не имеет значения, какой из них вы передаете. Но всегда помните о MemoryLeaks , если вы сохраняете долгоживущие ссылки на контекст

8 голосов
/ 05 декабря 2012

Как вы можете видеть на Android документ :

Класс Activity расширяется от "ContextThemeWrapper", а этот - от "ContextWrapper", а тот от "Context".

Итак, да, действие расширяет контекст!

...