假设我正在使用一个 RAM 和 CPU 密集型应用程序,我接到一个电话,我一定要等一分钟。在这种情况下,我想知道应用程序的命运如何。它是否仍会在后台继续执行,其优先级是否会改变?
此外,如果应用程序使用更多的 RAM 和 CPU,那么应用程序是否有可能被 android 操作系统关闭?
请分享讨论此主题的任何资源和文档。提前致谢。:)
假设我正在使用一个 RAM 和 CPU 密集型应用程序,我接到一个电话,我一定要等一分钟。在这种情况下,我想知道应用程序的命运如何。它是否仍会在后台继续执行,其优先级是否会改变?
此外,如果应用程序使用更多的 RAM 和 CPU,那么应用程序是否有可能被 android 操作系统关闭?
请分享讨论此主题的任何资源和文档。提前致谢。:)
它还会在后台继续执行吗
至少几毫秒,是的。无论应用程序如何移动到后台,一旦进入后台,它的进程就有资格被终止,从而为其他应用程序释放 RAM。何时发生取决于很多变量——可能是几毫秒,也可能是几小时。
它的优先级会改变吗?
后台应用程序的进程在有助于限制其 CPU 利用率的类中运行。
此外,如果应用程序使用更多的 RAM 和 CPU,那么应用程序是否有可能被 android 操作系统关闭?
无论RAM 和 CPU 的数量如何,应用程序的进程都可能在 Android 处于后台时随时终止。
区分应用程序本身和Activity
被隐藏的应用程序很重要。AnActivity
只是应用程序的一部分。当一个Activity
被隐藏时,某些生命周期方法被称为取决于它是部分隐藏(onPause
)还是完全隐藏(onStop
)。这不一定会影响您在Activity
被遮挡之前启动的后台进程。即使 anActivity
被隐藏,应用程序仍然存在。您在给定前台启动的后台线程和服务Activity
仍将作为现有应用程序进程的一部分运行(假设操作系统资源不低)。
您应该做的是考虑如何在其他生命周期方法(例如onResume
)中处理这些后台进程的结果,如果它们在模糊状态结束期间或之后完成。