2017-08-11 121 views
1

我尝试使用RxJava2遵循MVP设计模式。我是新来的。 当我请求来自API的数据,在我的演讲我打电话给我的型号那样:MVP RxJava2 - 管理网络错误

mModel.getDataFromAPI() 
    .subscribeOn(Schedulers.io()) 
    .observeOn(AndroidSchedulers.mainThread()) 
    .subscribe(data -> { 
     // Do something with the data 
    }, throwable -> { 
     // A wild error appears! 
     // TODO: Display a dialog 
    }); 

当出现错误时,我想用一个消息给用户显示一个对话框。

所以我在想的是在视图上创建一个displayErrorDialog(String message)。但问题是:我在应用程序的每个地方都会调用API,所以这意味着我的所有视图都必须实现该方法!

对话框需要通过查看显示:

  • 遵循MVP设计模式
  • ,因为我需要在当前语境下,以显示该对话框。

我正在寻找更好的解决方案,不必每次都有新的视图实现相同的方法。

回答

1

你可以有一个BaseView实现displayErrorDialog(String message),然后所有的意见将从BaseView延伸。

如果您使用的是interfaces,您可以使用BaseInterface做同样的事情,然后您可以从任何演示者调用基本视图方法。

我希望这有助于!

+0

这就是我正在想的。我已经开始实施这样的解决方案。谢谢。如果没有人有更好的解决方案,我会验证你的答案。 – Eselfar