如何将数据恢复到什么由Android摧毁一个活动

问题描述 投票:0回答:1

标题不好,请阅读以下,以更好地理解我的问题

我有一个Android应用程序,其任务之一是耗时,而且往往会2-5分钟内完成......这个任务是由具有起动活动的引用的后台服务之间进行取。

99%的用户并不希望等待这么长的时间寻找到加载栏,并会简单的打开另一个应用程序或类似的东西...什么可能导致安卓destroying引用的活动...

忽略这个故事的背景泄漏...我的问题是:

当服务完成其任务,它将尝试调用一个方法的值返回到父活动,但因为它是现在毁我不能做到这一点?

因此,当用户重新打开应用程序通过活动的最后已知状态是“装”,所以它会持续永远...(或重试重新运行什么将导致5分钟等待等任务...)

我怎样才能避免这种情况呢?

==============更新=================

得到一个很好的答案,可能会解决大部分问题像我,我决定添加更多的信息,让我清楚问题之后。

耗时后台服务不处理它需要这么长时间是密集的,实际上的原因,因为它的服务验证某些用户“资格证书”(当我说了一些,真的不止一个)

因此,我不能存储结果,并相信它是下一次运行有效

我不知道该协议有待提高,但要采取更大的杜彦武变化,所以我想知道,如果有人有任何想法如何处理它的实际需求

android android-asynctask background-service
1个回答
2
投票

是否有必要做运行后台任务每次你的活动开始时间?

通常情况下,如果你的活动需要这些值来工作,它需要很长时间来计算或获取这些值,你会后台服务已经与他们完成后,存储这些值。

基本上,你正在为你的数据的高速缓存。所以,你的活动启动时,它会检查数据缓存。如果发现数据,然后立即加载它。如果没有找到数据,那么它运行后台任务(通常在初始运行)。

这也是常见的有当数据被存储在缓存的时间戳,所以如果时间间隔太长,你既可以:

  • 显示过时的数据,在运行后台任务。后台任务的完成和新数据存入缓存,然后通知的活动,有新的数据。活动更新使用新的数据。
  • 不显示过时的数据,相反,你擦旧数据的高速缓存和运行后台任务。

基本上,这种解决方案只是有你的服务店的值计算到存储位置,无论它是一个数据库,SharedPreferences,文件,或等

您避免需要让你的服务回报值的活动,因为没有保证的活动依然存在。取而代之的是,只有服务通知它增加了新更新的数据存储位置的活动,所以如果活动仍然存在,它会不会有问题更新。如果活动已经死亡,那么它会简单地当它再次启动获取数据。

© www.soinside.com 2019 - 2024. All rights reserved.