use*_*902 5 memory android android-activity
我的应用程序在特定场景下遇到问题。活动流程如下:
发生的问题是当我将应用程序留在 LoginActivity 中并通过点击主页按钮将应用程序置于后台时。在后台,我会启动尽可能多的其他应用程序,以便让手机内存处于临界状态,并以这种方式强制 Android 系统终止我的活动,以便其他应用程序使用此内存。
当这种情况发生时,我尝试返回仍在打开的应用程序列表中的应用程序,当我这样做时,我读到Android系统重新创建了发生此内存释放时打开的最后一个活动,这就是那一刻当我的应用程序崩溃时,因为它没有存储在内存中的一些数据。
我的问题是,有什么方法可以告诉或配置应用程序,当这种情况发生时,不会重新创建最后一个活动,而是启动我的默认启动器活动(在本例中为 SplashScreenActivity ),该活动通常会预加载所使用的所有必要数据稍后在 LoginActivity 中。
请注意,我不需要我的应用程序每次使用时都启动 SplashScreenActivity 将应用程序置于后台然后返回前台。我需要它仅在 Android 系统终止时启动此默认活动,因为它需要一些内存。
您可以检查所需的资源是否仍然可用。如果不是,您可以使用以下命令返回第一个活动
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
Run Code Online (Sandbox Code Playgroud)
这将从堆栈中删除所有活动,您可以从头开始。
为了更轻松地调试,您还可以在开发人员设置中激活“不保留活动”选项。当您退出应用程序时,这总是会破坏 Activity。
如果您的数据可以使用该方法存储,onSaveInstanceState我建议您这样做。尽管我理解需要这样做,因为当涉及到复杂对象时,保存活动状态的 android 方法非常有限。
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |