【发布时间】:2016-08-28 17:26:17
【问题描述】:
我正在一个 Andorid 应用程序上实现 MVP 模式,我对检查互联网连接的最佳位置有疑问。 我通常在进行任何网络通话之前检查是否有互联网连接。
那么,我应该在 Activity 或 Presenter 的哪里查看? 我认为 Presenter 会是一个不错的地方,所以它决定做什么,但是我不能 100% 确定是否应该将它放在活动中并避免调用 Presenter。
【问题讨论】:
我正在一个 Andorid 应用程序上实现 MVP 模式,我对检查互联网连接的最佳位置有疑问。 我通常在进行任何网络通话之前检查是否有互联网连接。
那么,我应该在 Activity 或 Presenter 的哪里查看? 我认为 Presenter 会是一个不错的地方,所以它决定做什么,但是我不能 100% 确定是否应该将它放在活动中并避免调用 Presenter。
【问题讨论】:
我不认为 Presenter 是个好地方。 Presenter 应该询问模型中的新数据,例如 getData()。 Presenter 不应该知道它是来自本地数据库还是来自服务器。因此,在 Presenter 上检查 Internet 连接并不是一个好主意。
如果您使用存储库模式,Presenter 将要求模型/存储库获取数据。模型将首先将本地数据发送给演示者。并行,它会发送服务器请求(如果有网络连接)下载新数据,并将新数据发送给Presenter。
所以我认为,网络检查必须在 Repository/ 模型。您可以拥有实现实际网络检查代码的 Util 类。并从存储库中调用该方法,例如 AppUtil.isNetworkConnectionAvailable();
更多信息,请参考:https://github.com/googlesamples/android-architecture/tree/todo-mvp/
【讨论】:
解决办法:-
您应该检查 BaseActivity 类中的互联网连接可用性,然后扩展该活动是我认为更好的做法。
我在我的项目中是这样的:-
public boolean isInternetAvailable() {
return internet.isAvailable();
}
【讨论】: