【问题标题】:What happens to a running app when there's a call?有电话时正在运行的应用程序会发生什么?
【发布时间】:2013-06-24 12:38:34
【问题描述】:

假设我正在使用一个 RAM 和 CPU 密集型应用程序,我接到一个电话,我一定要等一分钟。在这种情况下,我想知道应用程序的命运如何。它是否仍会在后台继续执行并更改其优先级?

另外,如果应用程序使用更多的 RAM 和 CPU,应用程序是否有可能被 android 操作系统关闭?

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

【问题讨论】:

    标签: android performance call telephony


    【解决方案1】:

    它还会在后台继续执行吗

    至少几毫秒,是的。无论应用程序如何移动到后台,一旦进入后台,它的进程就有资格被终止,从而为其他应用程序释放 RAM。何时发生取决于很多变量——可能是几毫秒,也可能是几小时。

    它的优先级会改变吗?

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

    另外,如果应用程序使用更多的 RAM 和 CPU,应用程序是否有可能被 android 操作系统关闭?

    无论多少 RAM 和 CPU,应用程序的进程都可能在 Android 处于后台时随时终止。

    【讨论】:

      【解决方案2】:

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

      您应该做的是考虑如何在其他生命周期方法(例如onResume)中处理这些后台进程的结果,如果它们在模糊状态结束期间或之后完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-06
        • 2019-05-13
        • 2011-07-06
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        相关资源
        最近更新 更多