我如何在Android Studio中回想一个意图? 我正在尝试建立使用意图的服务。在某些情况下,如果活动未收到您的意图,我将尝试发送特定次数的广播(例如X次)。在X次之后,静止活动仍未获得该意图,我想删除该意图并对该活动进行其他操作。
答案 0 :(得分:0)
作为实现此目的的一种方法,您可以通过EventBus作业广播JobQueue事件,该事件可以重试发送事件所需的次数。订户活动订阅了此事件,并且仅在事件被处理的情况下创建您的Intent。
从代码角度来看,这可以实现为:
将要广播的事件:
class SomeEvent(val isSuccess: Boolean)
作业类,该实例由您的服务启动:
class SendCustomEventJob() : Job{
@Inject
@Transient
lateinit var eventBus: EventBus
// dagger jobs component injection
override fun inject(appComponent: AppComponent) {
super.inject(appComponent)
appComponent.inject(this)
}
override fun onRun() {
// some logic goes here, like API calls
eventBus.post(SomeEvent(true))
}
override fun shouldReRunOnThrowable(throwable: Throwable, runCount: Int, maxRunCount: Int): RetryConstraint {
if(runCount == 3)
// your custom job exceptions handling logic
}
override fun getRetryLimit(): Int = 3 // your custom retries number
override fun onAdded() { }
override fun onCancel(cancelReason: Int, throwable: Throwable?) {
eventBus.post(SomeEvent(false))
}
}
在活动订阅者中处理事件:
@Subscribe(threadMode = ThreadMode.MAIN)
fun onFetchedCustomEvent(event: SomeEvent) {
if (!event.isSuccess)
return
//create your intent here...
}