是否有不同的Android上下文?

时间:2015-07-24 09:59:13

标签: android android-context

我认为Android上下文可以作为单个对象工作,您可以通过不同的方式访问它。

  • 活动:喜欢"这个"
  • 方法:getContext()或getApplicationContext()
  • 以及......

但是,在我的项目中,我在MainActivity中的嵌套AsyncTask(onPostExecuteMethod)中使用简单的ArrayAdapter创建了一个简单的Spinner,我发现使用 getApplicationContext()它会有所不同和 MainActivity.this

  1. 文字白色 - > getApplicationContext()
  2. 文字黑暗 - > MainActivity.this
  3. 你能解释一下吗?

2 个答案:

答案 0 :(得分:3)

每个上下文都与应用程序上下文相关,每个活动都有自己的子上下文,它将与活动一起生存(并将随活动一起销毁)。

在您的示例中,根据您使用的上下文,您有不同的呈现,因为如果已为活动分配主题(以编程方式或在清单中),则活动将使用ContextThemeWrapper

您的应用程序中可能有一个黑暗的主题,但活动的主题很轻。

答案 1 :(得分:2)

Context获得的getApplicationContext()并未实现Activity所做的一切,特别是与UI,主题相关的内容......

到目前为止我见过的最完整的解释:Context, What Context?

基本上:

  • 将活动用于与UI相关的所有内容。
  • 将应用程序上下文用于可能超过Activity
  • 的任何内容