这是我的问题:
我有一项活动是用户输入“问题”的数据
- 此活动使用问题数据启动服务(按意图)
- 服务计算问题的解决方案
- 我想将此解决方案发送到活动中,以便在屏幕上打印。
问题是我不想再次开始活动......你知道我该怎么做吗?
谢谢!
答案 0 :(得分:3)
如果用户在“解决方案”准备就绪之前输入“问题数据”后按下BACK或HOME会怎样?
如果答案是您不需要做任何事情,那么请删除Service
,让Activity
完成计算解决方案的工作(可能使用AsyncTask
})。在这种情况下,使用Service
但是,如果用户仍然需要“解决方案”,那么使用Service
就可以了,但您必须考虑到启动该服务的Activity
可能不再存在或者可能不在前台。
处理此问题的一种方法是使用有序广播。让Activity
在前台(通过BroadcastReceiver
和onResume()
)时为广播注册高优先级onPause()
,并注册低优先级{{1}通过清单进行相同的广播。工作完成后,BroadcastReceiver
会Service
。 sendOrderedBroadcast()
- 已注册Activity
将使用结果更新其UI并中止广播。清单注册的BroadcastReceiver
会引发BroadcastReceiver
以让用户知道已完成的工作。 Here is a blog post了解有关此模式的更多信息,以及展示其用途的here is a sample project。