【问题标题】:Android MVP, where check internet connectionAndroid MVP,检查互联网连接
【发布时间】:2016-08-28 17:26:17
【问题描述】:

我正在一个 Andorid 应用程序上实现 MVP 模式,我对检查互联网连接的最佳位置有疑问。 我通常在进行任何网络通话之前检查是否有互联网连接。

那么,我应该在 ActivityPresenter 的哪里查看? 我认为 Presenter 会是一个不错的地方,所以它决定做什么,但是我不能 100% 确定是否应该将它放在活动中并避免调用 Presenter。

【问题讨论】:

    标签: android mvp


    【解决方案1】:

    我不认为 Presenter 是个好地方。 Presenter 应该询问模型中的新数据,例如 getData()。 Presenter 不应该知道它是来自本地数据库还是来自服务器。因此,在 Presenter 上检查 Internet 连接并不是一个好主意。

    如果您使用存储库模式,Presenter 将要求模型/存储库获取数据。模型将首先将本地数据发送给演示者。并行,它会发送服务器请求(如果有网络连接)下载新数据,并将新数据发送给Presenter。

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

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

    【讨论】:

    • 感谢您的方法和链接。我会再检查一遍!
    • 如果你发现一些不同的观点,请告诉我。 :)
    • 如果我发现了什么,我会在这里发帖。然而,有很多不同的方法,问题是取决于项目,这些方法比其他方法更适合。谢谢。
    • 你有解决办法吗?
    • 您可以在错误回调中从 Repository 向 Presenter 发送错误代码。并且根据错误代码,演示者可以选择显示“无网络,重试”消息。
    【解决方案2】:

    解决办法:-

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

    我在我的项目中是这样的:-

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

    【讨论】:

    • 你能举个例子吗?我正在这样做,但问题是广播接收器太慢,并且它的回调是在活动的 onCraete 之后触发的。
    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 2017-11-30
    • 2012-02-21
    • 2013-02-02
    • 2011-02-14
    • 2012-03-23
    • 1970-01-01
    • 2016-01-16
    相关资源
    最近更新 更多