我知道这已被多次询问过,但仍有许多像我这样的新开发人员觉得很困难。要避免memory leaks
应该使用哪个context
?
在某个地方我发现我们应该getApplicationContext()
并尽可能地尝试使用context-activity
。还http://android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html说
Try using the context-application instead of a context-activity
例如
要传递给RecyclerView Adapter
或Custom Dialog Class
我找到的一种方法是以这种方式将上下文传递给适配器
recyclerview.setAdapter(new YourAdapter(new WeakReference<Activity>(ActivityName).get()));
我传递背景的方式是对的吗?
请做一个详细的解释,以便其他人也受益。 谢谢
答案 0 :(得分:3)
传递给RecyclerView适配器或自定义对话框类的上下文
在处理UI问题时,请务必传递Activity
。
我传递背景的方式是对的吗?
在WeakReference
中使用Activity
时,您不需要RecyclerView
。
为避免内存泄漏应使用哪种上下文?
一般来说,这是无法回答的。最简单的基本规则是:当您担心Application
可能保留在Context
范围内时,使用Context
作为static
,例如在static
引用的对象中{1}}数据成员,或者在线程中。否则,请使用更专注的Context
(例如,您的Activity
,Service
)。
Dave Smith's blog post on contexts是我找到的关于该主题的最佳单页资源。