从GCRoot角度来分析Handler 内存泄漏
引言
看了好多博客发现都只说了handler会有内存泄漏风险,原因是handler持有了activity的引用。
但是为什么会发生内存泄漏,好像都没讲清楚。
我研究了一下,说一下我的理解。
开始分析
下面我们就来分析内存泄漏的具体原因,我们分两步来说。
- handler是怎么持有Activity引用的
- handler是怎么发生内存泄漏的
handler是怎么持有Activity引用的
Handler的使用,如果不考虑内存泄漏问题,我们一般都这么用,直接在activity中声明handler,并实现handleMessage方法。
public class MainActivity extends AppCompatActivity {
Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg)