防止应用程序在后台时杀死 Android 进程

问题描述 投票:0回答:1

我陷入这样的情况:用户去捕获图像以在活动的图像视图中进行设置,但是一旦用户在捕获图像后返回,活动就会重新启动。

当用户在一个图像视图中设置图像并且应用程序转到后台时,也会发生同样的情况。当用户返回活动时,它已经重新启动,并且之前设置的图像将被删除。

我检查了我的代码,没有任何代码相关。我可以看到 Android 进程的日志正在结束并在返回活动时重新启动。

有什么方法可以防止Android系统破坏或重新启动该Activity吗?

我已经尝试在清单文件中使用

android:persistent="true"
。我无法使用前台服务来保持应用程序处于活动状态,因为应用程序不需要这样做。

我经历了很多问题和答案,但没有任何帮助。

提前谢谢您。

更新

谢谢您的澄清。我知道 android 杀死进程是正常且预期的行为,但我无法在任何地方保留图像,因为在将其设置为图像视图之前有一些与所选图像相关的后台进程。这就是我想防止进程在后台被杀死的原因。

java android android-lifecycle
1个回答
0
投票

如果您无法将图像保留在任何地方,并且需要防止进程在后台被杀死,您可以考虑以下几种方法:

使用 onSaveInstanceState() 和 onRestoreInstanceState(): 您可以在

onSaveInstanceState()
方法中保存 Activity 的状态(包括图像 URI 或任何相关数据),并在
onRestoreInstanceState()
onCreate()
方法中恢复它。这样,即使 Activity 被销毁并重新创建,也可以恢复状态。 使用ViewModel:您可以使用ViewModel来存储与所选图像相关的数据。 ViewModel 旨在承受配置更改,并可以保存与 UI 相关的数据。 使用后台服务:虽然您提到不能使用前台服务,但您仍然可以考虑使用后台服务来执行与所选图像相关的后台进程。这样,即使 Activity 被销毁,服务也可以在后台继续工作。 处理配置更改:确保在活动中正确处理配置更改。如果您不希望在配置更改(例如方向更改)时重新创建 Activity,则可以在清单文件中指定您的 Activity 应自行处理这些更改,方法是将
android:configChanges="orientation|screenSize"
添加到清单中的活动声明中。 优化后台进程:如果与所选图像相关的后台进程是资源密集型的,请考虑对其进行优化,以减少其对系统的影响。这可能涉及优化内存使用、限制 CPU 使用或批处理任务以降低频率。

请组合使用这些方法,您可以最大限度地减少活动被销毁和重新创建的影响。

© www.soinside.com 2019 - 2024. All rights reserved.