Android - 在后台运行繁重的计算并将结果返回给Activity

时间:2012-02-12 13:39:25

标签: android multithreading service android-activity background

我已经在我的应用程序中实现了一些计算重量级的函数。根据输入的类型,线程可能需要几分钟才能返回。在此期间,我希望用户能够使用其他活动来执行不同的任务(即为下次运行准备数据)。然后,在服务完成计算之后,应该通过Toast通知用户结果已经准备好,并且他应该检查他启动服务的活动。不幸的是我在这一点上陷入困​​境。

是否有可能以某种方式与目前被销毁的活动进行通信?就像修改已保存的状态一样,这样当重新创建状态时,结果将会显示出来。我找到的唯一通信方式是通过服务广播,但这需要活动监听,这是不可能的,因为在服务结束时它不存在。

我遇到的唯一解决方案是在服务完成后写一个文件,然后尝试在Activity中读取它,但如果可能的话,我宁愿不使用文件系统。

我在这里错过了什么或想错了方向吗?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您可以从SharedPreference写一个Service

Activity可以在启动时检查首选项,并且您可以使用一些标记来指示结果来自您的计算。

您也可以从SharedPreference写入相同的Activity以使其无效,以便可以将其用于下一个结果。

答案 2 :(得分:0)

我会使用AsyncTask,并将计算中的值返回到某个有状态位置(甚至使用Application类或SharedPreferences)。

让AsyncTask在完成时启动您的活动,并获取您有状态存储的值以显示。

基本上,结合前2个答案,你应该设置。