回想一下Android中的意图

回想一下Android中的意图,android,performance,android-intent,Android,Performance,Android Intent,我如何回忆Android Studio中的意图? 我正在尝试构建一个使用意图的服务。在某些情况下,如果活动未接收到意图,我会尝试发送一次广播,最多发送特定次数(比如X次)。X次之后,“静止活动”仍无法获得该意图,我想删除该意图,并对该活动执行其他一些操作。为了实现这一点,您可以通过作业广播事件,该作业可以重试发送事件所需的次数。订阅方活动订阅了此事件,并仅在事件已处理的情况下创建您的意图 从代码的角度来看,这可以实现为: 事件,将进行广播: class SomeEvent(val isSucce

我如何回忆Android Studio中的意图?
我正在尝试构建一个使用意图的服务。在某些情况下,如果活动未接收到意图,我会尝试发送一次广播,最多发送特定次数(比如X次)。X次之后,“静止活动”仍无法获得该意图,我想删除该意图,并对该活动执行其他一些操作。

为了实现这一点,您可以通过作业广播事件,该作业可以重试发送事件所需的次数。订阅方活动订阅了此事件,并仅在事件已处理的情况下创建您的意图

从代码的角度来看,这可以实现为:

事件,将进行广播:

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...
}