我正在一个Android应用上实现MVP模式,并且我对于最佳的检查网络连接的位置存有疑问。 通常我会在进行任何网络调用之前先检查是否有网络连接。
那么,我应该在Activity还是Presenter中检查呢? 我认为Presenter是比较好的位置,这样它可以决定要做什么,但是我并不确定是否应该将其放在Activity中以避免对Presenter进行调用。
我不认为Presenter是一个好的位置。Presenter应该从模型中请求新数据,比如getData()。Presenter不应该知道数据是来自本地数据库还是服务器。因此,在Presenter中检查网络连接并不是一个好主意。
如果使用仓库模式,Presenter将向模型/仓库请求获取数据。模型将先向Presenter发送本地数据。同时,它会发送服务器请求(如果有网络连接)来下载新数据,并将新数据发送给Presenter。
因此,我认为网络检查必须在仓库/模型中进行。您可以拥有实现实际网络检查代码的Util类。并从仓库中调用该方法,比如AppUtil.isNetworkConnectionAvailable();
更多信息,请参考:https://github.com/googlesamples/android-architecture/tree/todo-mvp/
我在我的项目中就是这样做的:
public boolean isInternetAvailable() {
return internet.isAvailable();
}