前言
当前你已经入门Android开发,开始关注深入的问题,你就会碰到一个Android开发阶段经常碰到的问题,那就是内存泄漏. 其实大多数Android的内存泄漏都是因为activity里的资源释放不正确导致,activity与单例或者接口互相持有无法释放.这篇博客就来讲解如何在Android里最优的释放资源.
错误释放资源的一些例子
在看正面例子之前,我们看看反面例子,了解为什么经常莫名其妙的内存泄露
在Activity的onDestroy()的生命周期里释放资源
在下面的onDestroy()方法里我们有一个叫mHttpList的资源要释放,我们都知道activity的生命周期的最后是onDestroy方法,那么为什么在onDestroy()里释放资源会有问题呢?
问题出在onDestroy()生命周期并不是立即执行的.Activity退出前台后先是进入栈里的.是否执行onDestroy()是交给系统决定的,一般情况下系统的确会及时的运行onDestroy()方法销毁activity,但是在一些Activity跳转频繁的情况下可能系统并不会马上运行onDestroy()方法.这个时候问题就出现了你认为应该结束的资源并没有马上结束可能导致一些回调报错或者内存泄露.
复制代码
@Override
protected void onDestroy() {
super.onDestroy();
if (mHttpList != null){
mHttpList.release();
mHttpList = null;
}
}
复制代码
在Activity的finish()方法里释放资源
同上环境,那么finish方法里释放资源有那些问题呢?
重写的finish()是一个释放资源的好地方,在按返回键(或者你自己