在https://www.cnblogs.com/guanxinjing/p/10701192.html 这篇博客里了解了如何抓取与分析Android的内存泄露后,在这个博客里.将记录举例会引起内存泄露的情况.在android平台一般情况下的内存泄露都指页面(Activity或者Fragment等等). 因为他们会经常的进行创建与销毁. 所以除非特别指出,否则这篇博客的举例都是指view层泄露
单例类
object Singleton{ private var mActivity :Activity? = null public fun setActivity(activity :Activity){ mActivity = activity; } }
这里不限于Activity,如果将fragment或者dialog 交给单例类持有,也将有相同的内存泄露情况
在activity里的代码
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_test_demo) Singleton.setActivity(this) }
解决思路
尽量不要将Activity交给单例持有,如果非要交给单例持有,也应该是弱引用持有
End