Activity和Context有什么区别?

时间:2011-06-29 09:10:55

标签: android android-activity android-context

活动和背景是否相同,或者存在差异?

我什么时候应该有一个方法传递一个Activity,什么时候传递一个Context?

2 个答案:

答案 0 :(得分:103)

据我了解: Context是基础对象。因此,与Activity相同的每个Application都来自Context。这意味着每个活动和每个Application都是Context;

来自developer.android.com Activity

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

Application

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

只要您的应用程序处于活动状态,应用程序上下文就会持续,而活动上下文会因您的活动而死亡(在该活动的onDestroy之后无效)。

因此,如果您需要跨活动的Context(即在Singleton中),您最好使用Application上下文。

通常在需要上下文的Android Framework方法中,您传递的方法没有区别。但是,如果您要保留长期参考语境

,请始终注意MemoryLeaks

答案 1 :(得分:8)

正如您在Android doc上看到的那样:

Activity类扩展自“ContextThemeWrapper”,这个来自“ContextWrapper”,而来自“Context”。

所以,是的,一个活动扩展了上下文!