Android 在后台关闭应用程序时,冰激凌三明治是否更具攻击性?

Android 在后台关闭应用程序时,冰激凌三明治是否更具攻击性?,android,memory,android-4.0-ice-cream-sandwich,Android,Memory,Android 4.0 Ice Cream Sandwich,我一直收到来自现场客户的报告,当我的应用程序在后台运行一段时间(10-15分钟)时,我的应用程序正在关闭(不是强制关闭,只是关闭)。过去情况并非如此。这就好像Android在减少同时运行的应用程序的数量,从而减少设备上的总体内存压力方面更加积极 虽然总的来说这是件好事,但我收到了投诉,客户认为我的应用程序出现了故障,因为这过去不是标准行为 是否有人可以确认,ICS实际上更积极地关闭应用程序,如果是,是否有任何新的和建议的步骤来降低我的应用程序关闭的可能性,而不是总是正确和总是油嘴滑舌的“使用更少

我一直收到来自现场客户的报告,当我的应用程序在后台运行一段时间(10-15分钟)时,我的应用程序正在关闭(不是强制关闭,只是关闭)。过去情况并非如此。这就好像Android在减少同时运行的应用程序的数量,从而减少设备上的总体内存压力方面更加积极

虽然总的来说这是件好事,但我收到了投诉,客户认为我的应用程序出现了故障,因为这过去不是标准行为

是否有人可以确认,ICS实际上更积极地关闭应用程序,如果是,是否有任何新的和建议的步骤来降低我的应用程序关闭的可能性,而不是总是正确和总是油嘴滑舌的“使用更少的内存”


谢谢

这在很大程度上取决于设备。在Nexus S这样的设备上,应用程序“只有”384 MB可用内存,windows和应用程序确实会被更猛烈地杀掉。

如果它在后台运行10-15分钟,为什么保持运行对它很重要?您始终可以在
onPause()
onDestroy()
中保存活动的状态,并在用户下次打开活动时(在
onResume()
中)简单地恢复状态。如果它是一个长期运行的后台进程,您可能应该在服务中运行它。

我认为主要问题是我们有一个连接到服务、下载数据并绘制数据的启动序列。以前,只调用onPause,所以恢复速度非常快。现在,我们必须再次完成启动顺序。我们可以做大量的工程来序列化我们的状态并快速恢复它……如果操作系统可以冻结状态+分页,而不是完全破坏它,那就更容易了。考虑到这些变化,像我们这样的应用程序现在的最佳设计模式是什么?作为一个想法,可能缓存上次下载数据的本地副本,并从中恢复,同时生成一个线程在后台下载较新的数据。这样,用户至少可以立即看到一些准确的数据,即使这些数据不是最新的。更不用说,这种行为会影响到你无法控制的应用程序——我见过的很少有应用程序会在重启后费力地完全恢复其状态。(仅仅因为我切换到另一个应用程序一分钟,就不得不继续登录网页或网上银行,这是一个巨大的痛苦。)