Android MVP,检查网络连接

18

我正在一个Android应用上实现MVP模式,并且我对于最佳的检查网络连接的位置存有疑问。 通常我会在进行任何网络调用之前先检查是否有网络连接。

那么,我应该在Activity还是Presenter中检查呢? 我认为Presenter是比较好的位置,这样它可以决定要做什么,但是我并不确定是否应该将其放在Activity中以避免对Presenter进行调用。

2个回答

12

我不认为Presenter是一个好的位置。Presenter应该从模型中请求新数据,比如getData()。Presenter不应该知道数据是来自本地数据库还是服务器。因此,在Presenter中检查网络连接并不是一个好主意。

如果使用仓库模式,Presenter将向模型/仓库请求获取数据。模型将先向Presenter发送本地数据。同时,它会发送服务器请求(如果有网络连接)来下载新数据,并将新数据发送给Presenter。

因此,我认为网络检查必须在仓库/模型中进行。您可以拥有实现实际网络检查代码的Util类。并从仓库中调用该方法,比如AppUtil.isNetworkConnectionAvailable();

更多信息,请参考:https://github.com/googlesamples/android-architecture/tree/todo-mvp/


谢谢你的联系和提供链接。我会再次确认它! - Jose M Lechon
如果你有不同的看法,请告诉我。 :) - Bob
如果我找到了什么,我会在这里发布。然而,有很多不同的方法,问题在于取决于项目,有些方法比其他方法更适合。谢谢。 - Jose M Lechon
你有解决方案吗? - somia
在这种情况下,您将无法向用户显示“重试”对话框,这使他打开互联网并点击“重试”。 - MobileEvangelist
1
您可以在仓库的错误回调中发送错误代码给Presenter。根据错误代码,Presenter可以选择显示“无网络,请重试”消息。 - Bob

-1

解决方案:

我认为,在BaseActivity类中检查互联网连接的可用性,然后扩展该活动是更好的做法。

我在我的项目中就是这样做的:

public boolean isInternetAvailable() {
    return internet.isAvailable();
}

你能提供一个例子吗?我正在做这个,但问题是广播接收器太慢了,在活动的onCreate之后才触发它的回调函数。 - Motassem Jalal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接