我在StackOverflow上搜索了很多关于在Android环境中使用上下文的解释,但我只找到了零散的解释片段。
何时应该使用getcontext
而不是getactivity
?这个问题详细说明如下。
DialogFragment
和其他Fragment
中:创建Toast
、构建AlertDialog
、实例化Intent
...需要上下文。我们应该使用GetActivity
还是GetContext
?活动
而不是片段中编写的?顺便说一下,通过调用getContext
和getActivity
,可能会发生空异常和/或内存泄漏:何时?更准确地说:是否只有当调用方的生存期是被调用对象生存期的(严格)子集时才会出现这种情况(例如,对话框
调用getactivity/getcontext
,如果它还没有附加到它的活动,则返回null)?
在文档中,上下文对象包含关于应用程序环境的全局信息。它允许访问特定于应用程序的资源和类,以及对应用程序级操作的上调调用,如启动活动、广播和接收意图等。
getContext()
方法返回与当前对象关联的上下文,该对象可以是视图、片段、对话框或任何其他在其中定义或继承了此方法的对象。
getActivity()
方法返回对与片段对象关联的当前活动的引用。如果没有与片段相关联的活动,它将返回null
。我个人在传递上下文参数时从不使用此方法,我只使用getContext()
和getApplicationContext()
。
上下文最佳实践:
getContext()
和getApplicationContext()
足以传递上下文参数。如果不能立即访问它们,可以使用getActivity().getApplicationContext()
链接传递适当的上下文参数。这意味着您可以使用它创建toast
、alertdialogs
、intents
、fragments
和其他需要上下文的视图操作。getApplicationContext()
注册广播,则必须执行适当的清理以防止内存泄漏。参见此处请注意,这些是我个人的做法,我站在纠正:)。
问题内容: 我正在使用’multiprocess.Pool.imap_unordered’如下 我需要打电话或之后的for循环? 问题答案: 不,您没有,但是如果您不再使用游泳池,那可能是个好主意。 Tim Peters在此SO帖子中致电或致电的理由很明确: 至于Pool.close(),您应该在永远不会将更多工作提交给Pool实例的情况下(且仅在)进行调用。因此,通常在主程序的可并行化部分完成时
问题内容: 面试官问我: 什么是Observer,什么Observable时候应该使用它们? 我并不了解这些术语,因此当我回到家并开始使用GoogleObserver和Google搜索时Observable,从不同的资源中发现了一些要点: 1)Observable是一个类,Observer是一个接口。 2)Observable该类维护一个Observers的列表。 3)当一个Observable对
问题内容: 我在ORM上还很新。我刚刚开始阅读有关使用Hibernate的Java Persistence API的书籍和文档。 我只是想知道,关闭EntityManagerFactory与jdbc数据库连接关闭类似吗? 我们是否应该在每次持久/更新/删除后关闭它?如果我们不关闭它,数据库连接会保持打开状态吗? 问题答案: 我只是想知道,关闭与jdbc数据库连接关闭类似吗? 这并非完全正确,但关闭
问题内容: 我仍然是React的菜鸟,在互联网上的许多示例中,我看到了渲染子元素时出现的这种变化,我感到困惑。通常我看到以下内容: 但是然后我看到一个这样的例子: 现在,我了解了api,但是文档并未确切说明我何时应该使用它。 那么,一个人做什么却另一个人不能做什么呢?有人可以用更好的例子向我解释吗? 问题答案: 编辑: 相反,请看Vennesa的答案,这是一个更好的解释。 原版的: 首先,该示例仅
问题内容: 我正在使用MSSQL Server 2008 R2,当我偶然发现索引视图时,我正在尝试优化视图。不幸的是,我的大多数视图都使用左外部联接,而索引视图不支持这种联接。经过一堆研究,让我感到困惑的是最好的解决方法。我看到的方式有以下几种选择: 1) 使用技巧将左联接转换为内部联接,以使用“ OR(IsNull(a)AND IsNull(b))”模拟左联接 我在几个地方找到了该解决方案,但是
问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync