Android 安卓系统死机后的活动娱乐

Android 安卓系统死机后的活动娱乐,android,memory,android-activity,Android,Memory,Android Activity,我的应用程序的特定场景有问题。 活动流程如下所示: SplashScreenActivity(这是我的默认启动程序活动,它对外部应用程序主题进行一些重要的预加载 当我的主题加载后,它会自动转到下一个LoginActivity 出现的问题是,当我将我的应用程序留在LoginActivity,并通过点击home按钮将应用程序置于后台时。在后台,我启动尽可能多的其他应用程序,以便使手机内存处于关键状态,并以这种方式迫使安卓系统停止我的活动,以便其他应用程序使用此内存 当这种情况发生时,我尝试返回到我的

我的应用程序的特定场景有问题。 活动流程如下所示:

  • SplashScreenActivity(这是我的默认启动程序活动,它对外部应用程序主题进行一些重要的预加载
  • 当我的主题加载后,它会自动转到下一个LoginActivity
  • 出现的问题是,当我将我的应用程序留在LoginActivity,并通过点击home按钮将应用程序置于后台时。在后台,我启动尽可能多的其他应用程序,以便使手机内存处于关键状态,并以这种方式迫使安卓系统停止我的活动,以便其他应用程序使用此内存

    当这种情况发生时,我尝试返回到我的应用程序,它仍然在打开的应用程序列表中,当我这样做时,我读到Android系统重新创建了上次在内存释放时打开的活动,也就是我的应用程序崩溃的时刻,因为它没有存储在内存中的一些数据

    我的问题是,是否有任何方法可以告诉或配置应用程序,当这种情况发生时,不是重新创建上一个活动,而是启动我的默认启动程序活动(在本例中为SplashScreenActivity),它通常会预加载所有必要的数据,这些数据稍后将在LoginActivity中使用


    注意:我不需要我的应用程序在每次使用puts应用程序时启动SplashScreenActivity(SplashScreenActivity)(将应用程序放在后台然后返回前台)。我需要它仅在Android系统停止时启动此默认活动,因为它需要一些内存。

    您可以检查所需的资源是否仍然可用。如果没有,您可以继续使用返回到第一个活动

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    
    这将从堆栈中删除所有活动,您可以从头开始

    为了便于调试,您还可以在开发者设置中激活“不保留活动”选项。这将在您退出应用程序时始终销毁活动


    如果您的数据可以使用
    onSaveInstanceState
    方法存储,我建议您这样做。尽管我理解有必要这样做,但对于复杂对象,android保存活动状态的方法非常有限。

    欢迎使用安卓。注意活动生命周期,您是否尝试过查看全部?您应该能够使用此方法以及onCreate来解决您的问题。我可以相信,第一次创建活动时,savedInstanceState变量将为null,而在重新创建活动时,该变量将不为null吗?尝试了几次,结果总是这样,是否存在此savedInstanceState变量不为null的异常第一次创建活动时的值?仅当系统销毁活动时才会调用savedInstanceState()。请注意:第一次创建活动时,savedInstanceState变量将为null