我的应用程序的特定方案存在问题。 活动流程如下:
正在发生的问题是当我将我的应用程序留在LoginActivity中并通过点击主页按钮将应用程序置于后台时。在后台我开始尽可能多的其他应用程序,以便我可以让手机内存处于危急状态,并以此方式强制Android系统终止我的活动,以便其他应用程序使用此内存。
当这种情况发生时,我尝试回到仍在打开的应用程序列表中的应用程序,当我这样做时,我已经读过Android系统重新创建此内存释放发生时打开的最后一个活动是我的应用程序崩溃的时刻,因为它没有一些存储在内存中的数据。
我的问题是,有什么方法可以告诉或配置应用程序,当这种情况发生时,不会重新创建最后一个活动,而是启动我的默认启动器活动(在本例中为SplashScreenActivity),这通常会预加载所有必要的数据稍后将在LoginActivity中使用。
注意我不需要我的应用程序每次使用将应用程序放在后台然后返回前台时启动SplashScreenActivity。我需要它只在Android系统杀死它时启动此默认活动,因为它需要一些内存。
答案 0 :(得分:2)
您可以检查所需的资源是否仍然可用。如果他们不是,你可以使用
回到第一个活动intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
这将删除堆栈中的所有活动,您可以从头开始。
为了便于调试,您还可以在开发人员设置中激活“不要保留活动”选项。当你离开应用程序时,这将永远破坏活动。
如果您的数据可以使用onSaveInstanceState
方法存储,我建议您这样做。虽然我理解需要这样做,否则当涉及复杂对象时,保存活动状态的android方法非常有限。