Android:如何在启动活动中从服务中获取结果

时间:2012-03-03 15:27:15

标签: android service

这是我的问题:

我有一项活动是用户输入“问题”的数据
  - 此活动使用问题数据启动服务(按意图)   - 服务计算问题的解决方案
  - 我想将此解决方案发送到活动中,以便在屏幕上打印。

问题是我不想再次开始活动......你知道我该怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果用户在“解决方案”准备就绪之前输入“问题数据”后按下BACK或HOME会怎样?

如果答案是您不需要做任何事情,那么请删除Service,让Activity完成计算解决方案的工作(可能使用AsyncTask })。在这种情况下,使用Service

,您无法获得任何收益

但是,如果用户仍然需要“解决方案”,那么使用Service就可以了,但您必须考虑到启动该服务的Activity可能不再存在或者可能不在前台。

处理此问题的一种方法是使用有序广播。让Activity在前台(通过BroadcastReceiveronResume())时为广播注册高优先级onPause(),并注册低优先级{{1}通过清单进行相同的广播。工作完成后,BroadcastReceiverServicesendOrderedBroadcast() - 已注册Activity将使用结果更新其UI并中止广播。清单注册的BroadcastReceiver会引发BroadcastReceiver以让用户知道已完成的工作。 Here is a blog post了解有关此模式的更多信息,以及展示其用途的here is a sample project