本文在简书同步更新:https://www.jianshu.com/p/6887b3b7c5c7
前言
对于AsynTask大家也不陌生,是Android为我们提供的执行异步任务的类。
常用的操作就是后台运行线程,然后切换到主线程去更新UI。但是,在使用的过程中我们常常会发现AsynTask或多或少会出现内存泄露问题。
一、匿名内部类持有外部类的引用
网上大部分都提到造成AsynTask内存泄露的原因是因为匿名内部类持有外部类的引用造成的,当Activity被关闭退到后台时,由于AsynTask还持有Activity的引用导致Activity不能正常回收。其实这个说法并不完全正确,为什么呢。
在这里要纠正一个误区:匿名内部类持有外部类的引用导致内存泄露。
代码演示:
public class DemoActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);