【发布时间】:2018-12-01 16:33:37
【问题描述】:
我正在使用 MVP 架构,但我一直在思考如何正确释放演示者。首先,让我告诉你们发生了什么。
问题
1) 我的演示者发出异步服务器请求。
2) 当我收到服务器响应时,我的视图(片段)已经分离,但我的演示者仍然保留了它的实例(这可能导致内存泄漏),我从视图中调用一个方法来设置我收到的一些数据来自服务器。
3) 在我的视图中,我使用来自 getActivity() 方法的上下文,在这个阶段将返回 null。
我是如何解决这个问题的
1) 当我分离片段时,我在演示者上调用 release() 方法。在这个方法中,我考虑将我的视图实例设置为空。这会起作用,但是我需要在演示者的任何地方添加空检查,检查我的视图是否已经设置为空。似乎不是最好的方法。
2) 在我看来(片段),在使用之前检查 getActivity() 是否为空。但它不能解决内存泄漏问题,我需要在我的 Fragment(s) 的任何地方添加这个检查;
你们有替代方案吗?当我的片段被分离时,这是一种释放我的演示者的正确方法,每当我的演示者在我的视图上调用一个方法时,我都会确保该视图附加到一个活动? EventBus 是一个很好的方法吗?
非常感谢!
【问题讨论】:
标签: java android memory-leaks architecture mvp