标题不好,请阅读以下,以更好地理解我的问题
我有一个Android应用程序,其任务之一是耗时,而且往往会2-5分钟内完成......这个任务是由具有起动活动的引用的后台服务之间进行取。
99%的用户并不希望等待这么长的时间寻找到加载栏,并会简单的打开另一个应用程序或类似的东西...什么可能导致安卓destroying
引用的活动...
忽略这个故事的背景泄漏...我的问题是:
当服务完成其任务,它将尝试调用一个方法的值返回到父活动,但因为它是现在毁我不能做到这一点?
因此,当用户重新打开应用程序通过活动的最后已知状态是“装”,所以它会持续永远...(或重试重新运行什么将导致5分钟等待等任务...)
我怎样才能避免这种情况呢?
==============更新=================
得到一个很好的答案,可能会解决大部分问题像我,我决定添加更多的信息,让我清楚问题之后。
耗时后台服务不处理它需要这么长时间是密集的,实际上的原因,因为它的服务验证某些用户“资格证书”(当我说了一些,真的不止一个)
因此,我不能存储结果,并相信它是下一次运行有效
我不知道该协议有待提高,但要采取更大的杜彦武变化,所以我想知道,如果有人有任何想法如何处理它的实际需求
是否有必要做运行后台任务每次你的活动开始时间?
通常情况下,如果你的活动需要这些值来工作,它需要很长时间来计算或获取这些值,你会后台服务已经与他们完成后,存储这些值。
基本上,你正在为你的数据的高速缓存。所以,你的活动启动时,它会检查数据缓存。如果发现数据,然后立即加载它。如果没有找到数据,那么它运行后台任务(通常在初始运行)。
这也是常见的有当数据被存储在缓存的时间戳,所以如果时间间隔太长,你既可以:
基本上,这种解决方案只是有你的服务店的值计算到存储位置,无论它是一个数据库,SharedPreferences,文件,或等
您避免需要让你的服务回报值的活动,因为没有保证的活动依然存在。取而代之的是,只有服务通知它增加了新更新的数据存储位置的活动,所以如果活动仍然存在,它会不会有问题更新。如果活动已经死亡,那么它会简单地当它再次启动获取数据。