一旦绑定到android服务,如何检查它当前正在做什么?

一旦绑定到android服务,如何检查它当前正在做什么?,android,android-activity,android-service,android-service-binding,android-task,Android,Android Activity,Android Service,Android Service Binding,Android Task,假设我有一个Android启动的服务,它执行一些任务,例如: -服务开始 -执行任务A、任务B,然后下载文件1、文件2,最后执行任务C。 -服务站 假设服务在执行任务B时,有一个活动绑定到它。检查服务当前正在执行哪些任务以更新活动UI的正确方法是什么 我现在的做法是,在进程中为每个任务创建一个布尔标志,然后当活动绑定到服务时,它会检查哪个标志为true,以向活动发送正确的回调。它可以工作,但如果任务更多,出错时会变得更复杂,甚至更困难 private boolean doingTaskA=fal

假设我有一个Android启动的服务,它执行一些任务,例如:

-服务开始 -执行任务A、任务B,然后下载文件1、文件2,最后执行任务C。 -服务站

假设服务在执行任务B时,有一个活动绑定到它。检查服务当前正在执行哪些任务以更新活动UI的正确方法是什么

我现在的做法是,在进程中为每个任务创建一个布尔标志,然后当活动绑定到服务时,它会检查哪个标志为true,以向活动发送正确的回调。它可以工作,但如果任务更多,出错时会变得更复杂,甚至更困难

private boolean doingTaskA=false;
私有布尔doingTaskB=false;
.
.
公共无效doTaskA(){
//任务已启动,请将标志设置为true。
doingTaskA=true;
//发送回调以更新活动UI。
callback.onDoingTaskA();
//执行一些需要一些时间来检索信息的API调用
...
//任务已完成,设置为false。
doingTaskA=false;
}
公共void doTaskB(){
//任务已启动,请将标志设置为true。
doingTaskB=true;
//发送回调以更新活动UI。
callback.onDoingTaskB();
//执行一些需要一些时间来检索信息的API调用
//在后台执行时,活动绑定到此服务(假设
//尚未绑定)。
...
//任务已完成,设置为false。
doingTaskB=false;
}
公共IBinder onBind(意向){
//绑定时,请检查服务正在执行的操作。
如果(执行任务A){
//发送回调以更新活动UI。
callback.onDoingTaskA();
}
如果(执行任务B){
//发送回调以更新活动UI。
callback.onDoingTaskB();
}
...
}
请帮助我找到高效可靠的方法。
谢谢

为此,您可以使用事件总线,在您的服务中执行特定任务时仅触发事件谢谢您的建议,但我的问题不是如何与活动进行通信。我正在使用带回调的活页夹。在这里,我假设活动在后台,然后它在某个点绑定到服务。当活动处于后台或已销毁时,它将如何接收事件总线?我在这里的情况是,当服务已经在执行任务时,活动绑定。你能详细解释一下吗?帕特尔先生,事实上你是对的。使用粘性EvenBus事件实现了这一目的。非常感谢你的提示!很高兴这有帮助;)