我目前正在从事android模块化。如果API调用期间的模块A(未经授权)在模块B(登录模块)中启动活动,那么我有一个方案。我们是否可以回拨到模块A,以便模块B中的登录是否成功,以便我们可以尝试失败的请求。
我们可以通过StartActivtyForResult Intent进行回电。但是,当有许多API请求时,将无法很好地处理Intent结果。这也可能导致整个应用程序中处理意图的代码重复。
是否可以保留失败的API调用并在从另一个模块回叫之后重试?关于此方法的任何想法都将有所帮助
创建core
模块,使module A
和mobule B
实现模块core
在模块core
中添加依赖项RxJava2
并创建类EventBus
和Event
。如果您想用更多数据推送Event
,请对其进行扩展。
object EventBus {
private val sStream: Subject<Event> = PublishSubject.create<Event>().toSerialized()
@JvmStatic
fun push(event: Event) {
sStream.onNext(event)
}
@JvmStatic
fun observerOnUi(topic: Int): Observable<Event> {
return sStream.filter { event: Event -> event.topic == topic }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
}
@JvmStatic
fun observerOnBackground(topic: Int): Observable<Event> {
return sStream.filter { event: Event -> event.topic == topic }.subscribeOn(Schedulers.io())
}
}
open class Event(val topic: Int)
EventBus.push(Event(REQUEST_FAILED)
CompositeDisposable
,请确保在componenet销毁时调用dispose()。val disposable = CompositeDisposable()
disposable.add(EventBus.observerOnUi(REQUEST_FAILED).subscribe({
// do anything
}))
我使用Kotlin代码,如果在转换为Java时遇到问题,请告诉我