gpt4 book ai didi

android - Mosby MVI - 如何重试 Intent ?

转载 作者:行者123 更新时间:2023-11-30 00:42:25 24 4
gpt4 key购买 nike

我将 Mosby MVI 库用于一个演示应用程序,该应用程序在我的交互器中使用 Retrofit2 对 Restful API 执行简单的 CRUD 操作。我构建的 ViewStates 与示例应用程序非常相似,当 Retrofit 响应错误时包含 Throwable。在这种情况下,render() 函数会显示带有重试按钮的错误屏幕。单击重试按钮后,我想重新发出失败的 Intent 的最后一项。

我想在 Intent 中添加类似 retryWhen() 的内容,这当然只能由 onError() 触发。

是否有添加这种行为的简单方法?

最佳答案

实际上我使用 combineLatest() 自己解决了这个问题。retrySubject 不需要知道之前的 intent 的内容。

class MyViewActivity extends MviActivity<MyView, MyViewState> implements MyView {
PublishSubject<Boolean> retrySubject = ... ; // fires on retry Button click
...

@Override
public Observable<String> searchIntent(){
Observable<String> searchObservable = RxSearchView.queryTextChanges(searchView);
return Observable.combineLatest(searchObservable,retrySubject(searchString, retryClicked) -> searchString);
}
}

有一点需要注意。 combineLatest() 仅在所有 Observables 在订阅它们后发出第一个项目时才发出项目。这就是为什么我需要在 Mosby 完成订阅后初始化重试。

@Override
protected void onStart() {
super.onStart();
retrySubject.onNext(true);
}

另请在 Github 查看@sockeqwe 的回答

关于android - Mosby MVI - 如何重试 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42348038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com