2

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

这可能不是隐含的,或者当 getContext() 与传递给这些方法之一的 Context 不同时,是否存在这种情况?

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

非常感谢您解决这个问题

4

2 回答 2

0

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

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

有关更多信息,请阅读

于 2012-10-25T13:25:14.113 回答
0

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

检索标识此视图所附加到的窗口的顶级“真实”窗口的唯一标记。也就是说,这类似于 getWindowToken(),除非此视图所在的窗口是面板窗口(附加到另一个包含窗口),否则将返回包含窗口的令牌。

可能这个IPC机制和ViewAPI有关系。Android 设计者既不愚蠢也不热心:如果他们需要 aContext来构建 a View,这意味着 aContext就是他们所需要的,因此View必须使用应用程序上下文、服务上下文和 - 当然! - 活动上下文来构建 a ,但是不需要活动。这Context只是一个用于检索资源、访问数据库、构建意图等的综合 API。

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

于 2012-10-25T13:37:09.497 回答