2012-02-12 17 views
0

我在应用程序中实现了一些计算繁重的功能。根据输入类型的不同,线程可能需要几分钟才能返回。在此期间,我希望用户能够与其他活动一起执行不同的任务(即为下一次运行准备数据)。然后,在服务完成它的计算之后,应该向用户通知Toast结果已经准备好,并且他应该检查他开始服务的活动。不幸的是,我被困在这一点。Android - 在后台运行繁重的计算并将结果返回到活动

是否有可能以某种方式与此刻正在被破坏的活动沟通?就像修改已保存的状态一样,以便在重新创建时显示结果。我确实发现的唯一沟通方式是通过服务广播,但这需要活动进行监听,这是不可能的,因为服务完成时不存在。

是发生在我在写一个文件时,服务完成后再尝试在活动读它,但我宁愿不与文件系统的工作,如果可能的话,唯一的解决方案。

我在这里错过了什么东西,或者在错误的方向思考?

回答

0

你可以只从Service写入SharedPreference

Activity可以检查偏好时,它被启动,你可以有一些标记,以表明其结果是从你的计算。

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

0

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

拥有的AsyncTask发动对完成你的活动,并让你有状态的存储显示该值。

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