2012-03-03 48 views
1

这里是我的问题:安卓:如何让结果从服务早在开展活动

我有一个活动是用户输入一个“问题”
的数据 - 该活动推出一项服务(由意图)与问题的数据
- 该服务计算问题的解决方案
- 我想发送此解决方案的活动,以便它可以打印,如果在屏幕上。

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

谢谢!

回答

3

如果用户在“解决方案”准备好之前输入“问题数据”后按下BACK或HOME,会发生什么情况?

如果答案是你不需要做任何事情,那么摆脱Service,并让Activity做计算解决方案的工作(可能使用AsyncTask)。在这种情况下,您使用Service没有获得任何收益。

然而,如果用户仍希望“解决方案”,然后用Service是好的,但你必须考虑到启动该服务Activity可能不再存在或可能不会在前台。

处理此问题的一种方法是使用有序广播。让Activity在前台(通过onResume()onPause())为广播注册高优先级BroadcastReceiver,并通过清单为同一广播注册低优先级BroadcastReceiver。工作完成后,ServicesendOrderedBroadcast()Activity - 注册BroadcastReceiver将更新其用户界面与结果并中止广播。清单登记的BroadcastReceiver将引发Notification以让用户了解完成的工作。 Here is a blog post与更多关于这种模式,和here is a sample project演示其使用。