Android性能优化:解决内存泄漏

内存泄漏的本质是一个长生命周期的对象持有了另一个短生命周期的对象。Android中可能会有很多产生内存泄漏的地方,这里只简单的分析下在activity中开启一个子线程如何避免产生内存泄漏问题。

Android性能优化:解决内存泄漏_第1张图片
J7D51J@5XPQ36MR~GA7JHZ4.png

如图,如果在activity中开启了一个加载网络图片的子线程,这个该线程会持有当前activity中的imageview对象。大家都知道,如果该线程一直在运行,那么就会一直持有该imageview对象,就算在当前activity按了返回键,该activity退到后台,但因为子线程还在运行并且持有activity的对象,所以该activity无法走到生命周期的onDestoty()方法,该activity所占用的内存一直无法释放,这样就产生了内存泄漏,内存泄漏会导致常见的OOM问题。

这个时候我们可以像下图那样修改一下代码,通过使用弱引用来避免长期持有activity对象导致activity无法销毁:

Android性能优化:解决内存泄漏_第2张图片
1.png
Android性能优化:解决内存泄漏_第3张图片
2.png

通过静态内部类加弱引用的方式就可以避免activity对象被更长周期的线程持有。

你可能感兴趣的:(Android性能优化:解决内存泄漏)