想请问下老师的BasePresenter

来源:3-3 完成第一个Restful接口

慕用1394343

2019-06-11

@Override
    public void destroy() {
        T view = mView;
        mView = null;
        if (view != null) {
            // 把Presenter设置为NULL
            view.setPresenter(null);
        }
    }

老师这是为了防止内存泄漏还是什么吗? 如果是的话,那如果不写这段,会在什么情况下发生呢

写回答

2回答

HyZhan

2019-06-12

是的,这里是防止内存泄漏,如果不写的话,由于presenter中经常进行一些耗时操作,例如网络请求,但是presenter持有了Activity的强引用,如果在请求结束之前,Activity被销毁,那么会导致presenter一直持有Activity的引用,使得Activity无法被回收,而发生内存泄漏。

0
1
慕用1394343
非常感谢!
2019-06-12
共1条回复

Qiujuer

2019-06-19

关于为什么回答问题不及时的原因:

http://www.imooc.com/article/288131

在咱们的开发中需要主动调用destroy,然后做解绑操作,也可以使用虚引用来解决内存泄露问题。

看着问题解决了,非常高兴~~

0
0

手把手开发完整的即时通讯App 客户端+服务端+MVP架构

客户端+服务端+MVP架构+封装思想+主流框架

1749 学习 · 872 问题

查看课程