2013-06-24 53 views
0

假设我正在使用内存和CPU密集型应用程序,并且我得到一个我一定会说的电话,比如一分钟。在这种情况下,我想知道应用程序的命运。它会继续在后台执行吗?它的优先级会被改变吗?有通话时正在运行的应用程序会发生什么情况?

此外,如果所有的应用程序使用更高的内存和CPU的数量,有没有机会应用程序将被关闭的Android操作系统?

请分享讨论此主题的任何资源和文档。提前致谢。 :)

回答

2

还会否继续执行在后台

至少在几毫秒,是的。无论应用程序如何移动到后台,只要在后台运行,其进程都有资格终止,为其他应用程序释放内存。当发生这种情况取决于很多变量 - 可能是毫秒,可能是几个小时。

并将其优先级改变?

后台应用程序的进程运行在一个有助于限制CPU利用率的类中。

另外,如果所有的应用程序使用更高的内存和CPU的数量,有没有机会应用程序将被关闭的Android操作系统?

不管的RAM和CPU量的,该应用程序的处理可以由Android在任何点处终止时,它是在背景中。

1

区分应用程序本身和被遮挡的Activity很重要。 Activity只是应用程序的一部分。当Activity被隐藏时,某些lifecycle methods被称为depdning它是部分隐藏()还是完全隐藏(onStop)。这并不一定会影响您在Activity被遮挡之前启动的后台进程。即使隐藏了Activity,该应用仍然存在。在给定的Activity前台运行时,后台线程和服务将作为现有应用程序进程的一部分继续运行(假设操作系统资源不足)。

你应该做的是思考如何在其他生命周期方法(例如onResume)内处理这些后台进程的结果应该他们完成durring或模糊状态结束后。

相关问题