我在应用程序中经常使用Context
,而且我听说它经常导致内存泄漏和其他问题,所以我有几个相关的问题。
最好使用什么Context
:我是否应该始终使用getApplicationContext()
,或者如果可能的话,使用Activity
(如使用getActivity)
或 Fragment
中的 ()Activity
中的 this
或通常出现的 Context
对象如果我在广播接收器
内部,来自构造函数或诸如onReceive()
之类的方法的参数?
如何释放Context
相关对象?当我不再需要它时,只需将 null
分配给保存对 Context
对象的引用的变量?
如果我使用一些 Context
来实例化 Toast
、ProgressDialog
、TextView
或其他对象会怎么样?我是否也应该释放对这些对象的引用以避免内存泄漏?
将 Context
对象保留在全局变量中是一个好习惯吗?因为我经常在内部类或方法中需要它。
我希望得到一些明确的澄清、解释、相关主题的链接。
最佳答案
不同的上下文有不同的能力(例如,只有Activity上下文才能启动另一个Activity)。
查看有关如何使用上下文的精彩文章:http://www.doubleencore.com/2013/06/context/
例如,常见的陷阱之一是在 AsyncTask 上使用 Activity 上下文。这里的主要问题是,当 AsyncTask 仍在工作时, Activity 可能会完成(并且上下文会被破坏)。如果它尝试使用上下文进行任何操作,它将失败。在这种情况下,最好使用构造函数(或任何其他方法)中接收的上下文来检索应用程序上下文。
关于android - 正确使用上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342747/