[英]Android activity recreation after system kills it
我的应用程序在特定场景中遇到问题。 活动流程如下:
发生的问题是当我将我的应用程序保留在LoginActivity中并通过点击主页按钮将应用程序置于后台时。 在后台我开始尽可能多的其他应用程序,以便我可以让手机内存处于危急状态,并以此方式强制Android系统终止我的活动,以便其他应用程序使用此内存。
当这种情况发生时,我尝试回到仍在打开的应用程序列表中的应用程序,当我这样做时,我已经读到Android系统重新创建了当此内存释放发生时打开的最后一个活动,那就是当下当我的应用程序崩溃,因为它没有一些存储在内存中的数据。
我的问题是,有什么方法我可以告诉或配置应用程序,当这种情况发生时,不重新创建最后一个活动,但启动我的默认启动器活动(在本例中为SplashScreenActivity),通常会预加载所有必需的数据使用稍后在LoginActivity中。
注意我不需要我的应用程序每次使用put应用程序在后台启动SplashScreenActivity然后返回到前台。 我需要它只在Android系统杀死它时启动此默认活动,因为它需要一些内存。
您可以检查所需的资源是否仍然可用。 如果他们不是,你可以通过使用回到第一个活动
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
这将删除堆栈中的所有活动,您可以从头开始。
为了便于调试,您还可以在开发人员设置中激活“不要保留活动”选项。 当你离开应用程序时,这将永远破坏活动。
如果您的数据可以使用onSaveInstanceState
方法存储,我建议您这样做。 虽然我理解需要这样做,否则当涉及复杂对象时,保存活动状态的android方法非常有限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.