繁体   English   中英

系统杀死后的Android活动娱乐

[英]Android activity recreation after system kills it

我的应用程序在特定场景中遇到问题。 活动流程如下:

  1. SplashScreenActivity(这是我的默认启动器活动,它执行一些重要的外部应用程序主题预加载
  2. 加载我的主题后,它会自动转到下一个LoginActivity

发生的问题是当我将我的应用程序保留在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM