【问题标题】:Android - Running heavy computations in background and returning the result to an ActivityAndroid - 在后台运行大量计算并将结果返回给 Activity
【发布时间】:2012-02-12 13:39:24
【问题描述】:

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

是否有可能以某种方式与此刻被销毁的 Activity 进行通信?就像修改保存的状态一样,这样当它重新创建时,结果就会显示出来。我发现的唯一通信方式是通过 Service 的广播,但这需要 Activity 进行侦听,这是不可能的,因为在 Service 完成时它不存在。

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

我是在这里遗漏了什么还是想错了方向?

【问题讨论】:

    标签: android multithreading service android-activity background


    【解决方案1】:
    【解决方案2】:

    您可以从Service 写信给SharedPreference

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

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

    【讨论】:

      【解决方案3】:

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

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

      基本上,结合第一个 2 个答案,你应该已经设置好了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-04
        • 1970-01-01
        • 2012-11-27
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多