新的Handler()。postDelayed(新的Runnable()内存泄漏

时间:2018-09-12 14:18:08

标签: android heap handler leakcanary

关于堆问题和内存泄漏,
我阅读了以下文章,其中强调了为处理程序部分创建静态类:
boolean indexing

下面的代码是否容易发生堆内存泄漏?

///////////////////Handler 1
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        if (x == 1) {
            ///////////////////Handler 2            
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    if(y == 1) {
                        ///////////////////Handler 3                        
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                            //Do work A                             
                            }
                        }, 1000);
                    }
                    else
                    {
                        // do work B
                    }
                }
            }, 1000);
        }
        else
        {
            // do work B
        }
    }
}, 1000);

1 个答案:

答案 0 :(得分:0)

我进行了一次证明测试,结果是LeakCanary的上述代码没有检测到内存泄漏(为确保LeakCanary正常工作,我使用了另一个{{1 }}问题,并且检测到该Handle)泄漏

我还无法描述确切的区别