我们有一个应用程序,它将一些配置数据保存在内存中。在应用程序启动时从服务器获取配置数据。但是,我们希望不时更新此配置(因此来自服务器的新配置数据会传播到客户端)。我们的应用程序通常不会长时间停留在前台。
根据Android文档,可以杀死后台进程以释放一些内存。然而,似乎无法保证这将在合理的时间内发生(例如4小时)。因此,如果不需要内存,应用程序可能永远存在。 https://developer.android.com/guide/components/processes-and-threads.html
我们可以依赖Android在一段时间后杀死后台任务吗?或者我们是否必须构建一种机制,以便在应用程序运行时更新配置数据?
你能为一方或另一方提供一些文件或有根据的实验吗?
祝你好运
本
答案 0 :(得分:1)
然而似乎无法保证,这将在合理的时间内发生(例如4小时)。
正确,无法保证。
因此,如果不需要内存,应用程序可能永远存在。
这只会发生在永远不需要分叉新进程的设备上,并且所有现有进程的所需系统RAM总和都适合可用的系统RAM。对于任何给定的设备,这两者都不可能极。在特定情况下,您可以控制Android,硬件,所有数据源等(例如,在嵌入式系统中使用Android)。
我们可以在一段时间后依靠Android杀死后台任务吗?
对于“某个时间”的某些价值,是的。但是,“一段时间”可能超过四个小时。
或者我们是否必须构建一种机制,在应用程序运行时更新配置数据?
好吧,您已经有一种从应用的每个入口点(例如,每个活动)延迟加载此配置数据的方法。否则,您在“应用程序启动时从服务器获取配置数据”的实现已经中断,需要修复。
如果你有这个,那么“在应用程序运行时更新配置数据”只是跟踪数据加载的时间,并包括作为延迟加载算法的一部分的陈旧检查。 IOW,现在你的算法是“如果数据丢失,启动后台下载操作并告诉调用者它将异步获取配置数据”,现在它变成“如果数据丢失或太旧,踢关闭后台下载操作并告诉调用者它将异步获取配置数据“。