0

我们有一个应用程序将一些配置数据保存在内存中。在应用程序启动时从服务器获取配置数据。但是,我们希望不时更新此配置(以便将来自服务器的新配置数据传播到客户端)。我们的应用程序通常不会在前台停留很长时间。

根据 Android 文档,可以杀死后台进程以释放一些内存。然而,似乎无法保证这将在合理的时间内发生(例如 4 小时)。因此,如果不需要内存,应用程序可能会永远存在。 https://developer.android.com/guide/components/processes-and-threads.html

一段时间后我们可以依靠Android杀死后台任务吗?还是我们必须建立一种机制,在应用程序运行时更新配置数据?

您能否为一方或另一方提供一些文档或有充分根据的实验?

最好的祝福

4

1 回答 1

1

然而,似乎无法保证这将在合理的时间内发生(例如 4 小时)。

正确,没有保证。

因此,如果不需要内存,应用程序可能会永远存在。

这只会发生在永远不需要派生新进程的设备上,并且所有现有进程所需的系统 RAM 的总和都适合可用的系统 RAM。对于任何给定的设备,这两种情况都不太可能是真的在您控制 Android、硬件、所有数据源等的特定场景中可能会出现这种情况(例如,在嵌入式系统中使用 Android)。

一段时间后我们可以依靠Android杀死后台任务吗?

对于“一段时间”的某些价值,是的。然而,“一段时间”可能超过四个小时。

还是我们必须建立一种机制,在应用程序运行时更新配置数据?

好吧,您已经有了一种从应用程序的每个入口点(例如,每个活动)延迟加载此配置数据的方法。否则,您的“应用程序启动时从服务器获取配置数据”的实现已经损坏,需要修复。

如果你有这个,那么“在应用程序运行时更新配置数据”只是跟踪数据加载时间的问题,并将过时检查作为延迟加载算法的一部分。IOW,而现在您的算法是“如果数据丢失,启动后台下载操作并告诉调用者它将异步获取配置数据”,现在它变成“如果数据丢失或太旧,则启动关闭后台下载操作并告诉调用者它将异步获取配置数据”。

于 2016-10-13T14:35:11.730 回答