如果能够调用view.getContext()来返回当前正在呈现视图实例的Activity的上下文,为什么某些View族方法会将Context作为参数?
当getContext()与传递给其中一个方法的Context不同时,这可能不是隐含的,还是存在偶然性?
非常感谢清除它
答案 0 :(得分:0)
view.getContext()
实际上返回的是活动的上下文,而不是应用程序的上下文。这就是您在初始化新视图时需要提供此类上下文的原因。
这两种情况之间存在差异。活动的上下文附加到该特定活动的生命周期。但是,应用程序的上下文是指应用程序的生命周期。
有关详细信息,请阅读this。
答案 1 :(得分:0)
我最近阅读了一些返回IBinder
的API,例如getWindowToken()
和getApplicationWindowToken()
。引用后者:
检索标识顶层“真实”窗口的唯一标记 此视图附加到的窗口。也就是说,这就像 getWindowToken(),除非此视图的窗口是面板窗口 (附加到另一个包含窗口),然后是令牌 而是返回包含窗口。
这个IPC机制可能与View
API有关。 Android设计师并不愚蠢或热心:如果他们需要Context
来构建View
,则意味着他们只需要Context
,因此构建View
必须是可以使用应用程序上下文,服务上下文和当然! - 活动上下文,但不需要活动。 Context
只是一个用于检索资源,访问数据库,构建意图等的伞形API。
这不是你问题的答案,但也许可以作为帮助点。我自己在寻找答案。希望你的问题得到应有的重视。