我可以依靠后台 Android 进程在合理的时间内被杀死吗

Can I rely on a Background Android Process to get killed within a reasonable amount of time

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

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

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

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

此致

However there seems to be no guarantee, that this will happen within a reasonable amount of time (say e.g. 4h).

正确,无法保证。

So the app might be alive forever, if no memory is required.

这只会发生在从不需要派生新进程的设备上,并且所有现有进程所需系统 RAM 的总和都在可用系统 RAM 之内。 极不可能这两个对于任何给定设备都是正确的。在特定情况下,您可能会控制 Android、硬件、所有数据源等(例如,在嵌入式系统中使用 Android)。

Can we rely on Android to kill background tasks after some time?

对于 "some time" 的某些值,是的。但是,"some time" 可能会超过四个小时。

Or do we have to build a mechanism, to update the configuration data while the app is running?

好吧,您已经有了一种从应用程序的每个入口点(例如,每个 activity)延迟加载此配置数据的方法。否则,您的 "the configuration data is fetched from the server on start of the application" 实现已经损坏,需要修复。

如果你有这个,那么 "update the configuration data while the app is running" 只是跟踪数据加载时间的问题,并将过时检查作为延迟加载算法的一部分。 IOW,而现在你的算法是 "if the data is missing, kick off the background download operation and tell the caller that it will get the configuration data asynchronously",现在它变成 "if the data is missing or is too old, kick off the background download operation and tell the caller that it will get the configuration data asynchronously".