【发布时间】:2019-05-11 10:46:22
【问题描述】:
我在 StackOverflow 和 Google 上搜索了很多关于在 Android 环境中使用上下文的解释,但我只找到零散的解释片段。
我们什么时候应该使用getContext 而不是getActivity? 问题如下。
-
在
DialogFragment和其他Fragment中:创建Toast、构建AlertDialog、实例化Intent...需要上下文。我们应该使用getActivity还是getContext? -
如果这些操作写在
Activity而不是片段中?
顺便说一句,调用getContext 和getActivity 可能会发生空异常和/或内存泄漏:什么时候?更准确地说:它是否仅在调用者的生命周期是被调用对象的生命周期的(严格)子集时发生(例如,Dialog 调用 getActivity/getContext 如果它尚未附加到其活动,则返回 null) ?
【问题讨论】:
-
我实际上没有问题,我只是不明白如何在精确调用两者的正确方法时没有任何确定的资源。它应该非常清楚,我没有找到明确的答案。有人告诉将 getActivity 用于 UI 小部件,但为什么呢?没有任何文件谈论它。顺便说一句,很多 Stackoverflow 答案都建议使用类/对象属性来存储来自 OnAttach 回调的上下文和活动。但是,其他人说这是一个不好的想法,它会引起内存泄漏。 2019年怎么可能有..
-
... 对getContext和getActivity有很多矛盾?这个问题旨在澄清所有这些奇怪的答案和神话。
-
其他不确定性例如:getActivity和getContext是同一个词,有人说。但显然这不是真的。这个问题也应该清除这些不确定性。事实上,它可以为所有这些关于 getContext 和 getActivity 的误解带来一个明确而完整的答案。我们在 2019 年,怎么可能对使用 getContext 和 getActivity 如此不精确......我所有的问题都应该在官方文档和/或 Stackoverflow 问题中得到处理......但是没有......在 2019 年...... .
-
也许我错了,但是这种问题对于很好地理解我们作为开发人员所做的事情非常重要......它并不总是“嘿伙计们帮助帮助,我有一个错误,在这里是我的代码”,还有“我怎样才能以最漂亮的方式做到这一点?” ...这个问题(及其答案)对我很有帮助,非常感谢;)
标签: android android-activity android-context