假设我正在使用内存和CPU密集型应用程序,并且我得到一个我一定会说的电话,比如一分钟。在这种情况下,我想知道应用程序的命运。它会继续在后台执行吗?它的优先级会被改变吗?有通话时正在运行的应用程序会发生什么情况?
此外,如果所有的应用程序使用更高的内存和CPU的数量,有没有机会应用程序将被关闭的Android操作系统?
请分享讨论此主题的任何资源和文档。提前致谢。 :)
假设我正在使用内存和CPU密集型应用程序,并且我得到一个我一定会说的电话,比如一分钟。在这种情况下,我想知道应用程序的命运。它会继续在后台执行吗?它的优先级会被改变吗?有通话时正在运行的应用程序会发生什么情况?
此外,如果所有的应用程序使用更高的内存和CPU的数量,有没有机会应用程序将被关闭的Android操作系统?
请分享讨论此主题的任何资源和文档。提前致谢。 :)
还会否继续执行在后台
至少在几毫秒,是的。无论应用程序如何移动到后台,只要在后台运行,其进程都有资格终止,为其他应用程序释放内存。当发生这种情况取决于很多变量 - 可能是毫秒,可能是几个小时。
并将其优先级改变?
后台应用程序的进程运行在一个有助于限制CPU利用率的类中。
另外,如果所有的应用程序使用更高的内存和CPU的数量,有没有机会应用程序将被关闭的Android操作系统?
不管的RAM和CPU量的,该应用程序的处理可以由Android在任何点处终止时,它是在背景中。
区分应用程序本身和被遮挡的Activity
很重要。 Activity
只是应用程序的一部分。当Activity
被隐藏时,某些lifecycle methods被称为depdning它是部分隐藏()还是完全隐藏(onStop
)。这并不一定会影响您在Activity
被遮挡之前启动的后台进程。即使隐藏了Activity
,该应用仍然存在。在给定的Activity
前台运行时,后台线程和服务将作为现有应用程序进程的一部分继续运行(假设操作系统资源不足)。
你应该做的是思考如何在其他生命周期方法(例如onResume
)内处理这些后台进程的结果应该他们完成durring或模糊状态结束后。