相关文章:
Android:聊聊我所理解的MVP (文章一:简书 阅读量较少 但是是好文章 MVP深入讲解)
Android:聊聊 MVP 中 Presenter 的生命周期 (文章二:简书 阅读量较少 但是是好文章 设计Presenter的生命周期)
安卓MVP浅析及Presenter的生命周期问题 (文章三:CSDN 3k阅读量)
正文:
文章三的一段介绍:
Presenter控制逻辑,也就是控制网络操作,绑定数据,一系列逻辑都在这。那么,当activity关闭以后,Presenter怎么处理网络请求,异步操作呢?
比如上面的loadData(),如果acitivity已经关闭了,而网络操作又没走完,就会内存泄漏,会不会空指针不好说,view虽然持有p,但是也不能在Activity的onDestroy里面直接的将p=null吧。对象=null也只是断开引用而已,还并不是真的释放,这样没用的,而且p还持有view呢,异步也不会因此结束。所以得有个接口告诉p,我要挂了,你也自杀吧。
所以:
interface BasePresenter {
void onStart();
void onDestroy();
}
让所有的Presenter都继承BasePresenter,然后在activity中相应的生命周期里面调用,在相应的方法里面,初始化、结束异步操作,释放资源,将view=null;
而在activity里面,由于Presenter并没有view的引用了,所以p随着activity的销毁也就跟着销毁了,不会造成上下文的泄漏等。
总结:此方法比较初级,看着也不是那么高大上。