【发布时间】:2020-11-30 14:07:57
【问题描述】:
我使用 mActivity 来维护活动的上下文。
onAttach
override fun onAttach(context: Context) {
super.onAttach(context)
if(context is Activity) mActivity = context
}
我想如果我使用这个,那将是内存泄漏,因为 mActivity 维护活动引用,并且当活动被销毁时,mActivity 仍然引用被销毁的活动。 mActivity 是不是很好用?
【问题讨论】:
-
为避免内存泄漏,您可以在分离时将
mActivity设置为 null -
我知道那种方式,但是如果我想在activity被销毁后使用上下文,我不能使用那种方式。 like this
Handler(Looper.getMainLooper()).postDelayed({ showToast(mActivity!!,"activity!!") },5000) // after activity is destroyed,这样会报错。 -
就我个人而言,当有更好的获取方式时,我认为没有必要保留对上下文的引用
-
如果是
Fragment,那么你应该使用已经存在的getActivity()。是的,它会在分离后返回null,你不应该使用分离的Activity。
标签: android