2015-07-24 1 views
0

Я думал, что Android-контекст работает как одноэлементный объект, к которому вы обращаетесь по-разному.Существуют ли разные контексты для Android?

  • Деятельность: как "этого"
  • Методы: getContext() или getApplicationContext()
  • и многое другое ...

Однако, в моем проекте, я создал простой Spinner, используя простой ArrayAdapter во вложенной AsyncTask (onPostExecuteMethod) в моей MainActivity, и я увидел, что он работает с использованием getApplicationContext() и MainActivity.this.

  1. Текст белый с -> getApplicationContext()
  2. Текст темноте -> MainActivity.this

Можете ли вы объяснить мне, что?

+1

http://stackoverflow.com/questions/7298731/when-to-call-activity-context-or-application-context – Raghunandan

ответ

2

Context, полученный из getApplicationContext() не реализует все Activity делает, особенно вещи, связанные с пользовательским интерфейсом, темы, ...

Наиболее полное объяснение, которое я видел до сих пор: Context, What Context?

В основном:

  • Используйте эту активность для всего, что связано с пользовательским интерфейсом.
  • Используйте контекст приложения для всего, что может жить дольше, чем Activity.
+0

Фантастическое резюме :) – juanhl

3

Каждый контекст связан с контекстом приложения, каждое действие имеет свой собственный субконтекст, который будет жить с активностью (и будет уничтожен с помощью активности).

В вашем примере у вас есть другой рендеринг в зависимости от контекста, который вы используете, поскольку Activities использует ContextThemeWrapper, если им была назначена тема (программно или в манифесте).

У вас, вероятно, темная тема в вашем приложении, но легкая тема для этой деятельности.