何时View方法的Context参数不等同于.getContext()

时间:2012-10-25 13:17:02

标签: android

如果能够调用view.getContext()来返回当前正在呈现视图实例的Activity的上下文,为什么某些View族方法会将Context作为参数?

当getContext()与传递给其中一个方法的Context不同时,这可能不是隐含的,还是存在偶然性?

以下是一个示例:http://developer.android.com/reference/android/widget/ViewAnimator.html#setInAnimation(android.content.Context, int)

非常感谢清除它

2 个答案:

答案 0 :(得分:0)

view.getContext()实际上返回的是活动的上下文,而不是应用程序的上下文。这就是您在初始化新视图时需要提供此类上下文的原因。

这两种情况之间存在差异。活动的上下文附加到该特定活动的生命周期。但是,应用程序的上下文是指应用程序的生命周期。

有关详细信息,请阅读this

答案 1 :(得分:0)

我最近阅读了一些返回IBinder的API,例如getWindowToken()getApplicationWindowToken()。引用后者:

  

检索标识顶层“真实”窗口的唯一标记   此视图附加到的窗口。也就是说,这就像   getWindowToken(),除非此视图的窗口是面板窗口   (附加到另一个包含窗口),然后是令牌   而是返回包含窗口。

这个IPC机制可能与View API有关。 Android设计师并不愚蠢或热心:如果他们需要Context来构建View,则意味着他们只需要Context,因此构建View必须是可以使用应用程序上下文,服务上下文和当然! - 活动上下文,但不需要活动Context只是一个用于检索资源,访问数据库,构建意图等的伞形API。

这不是你问题的答案,但也许可以作为帮助点。我自己在寻找答案。希望你的问题得到应有的重视。