Handler创建方式,new handler(CallBack) 避免内存泄漏

我们知道,直接创建Hanlder:
private Handler = new Handler(......)As会报一个可能存在内存泄漏的错误,这是
匿名内部类持有外部对象所致我知道;
但是private Handler = new Handler(new Callback(....))却不报错,难道传一个参就
不是匿名内部类了?这部分源码也看了,依然不是很明白。

 请知道的大神知道下。

个人不同意楼上的说法,使用CallBack也是匿名内部类,也会导致内存泄露(已测试),因为Handler直接引用了他的成员mCallBack,这个CallBack也引用了外部类,即Activity
根据官方的说法应该是使用静态内部类
https://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html
如果想用CallBack的应该自己实现一个Handler使用WeakReference来封装CallBack
https://www.jianshu.com/p/88cf7a923b56

有错误还请指出

这两种方式是不一样的,第一种是匿名内部类,第二种不是的

Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //do something
            super.handleMessage(msg);
        }
    };

Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            //do something
            return true;
        }
    });

请注意两种用法的差别