假設我正在使用內存和CPU密集型應用程序,並且我得到一個我一定會說的電話,比如一分鐘。在這種情況下,我想知道應用程序的命運。它會繼續在後臺執行嗎?它的優先級會被改變嗎?有通話時正在運行的應用程序會發生什麼情況?
此外,如果所有的應用程序使用更高的內存和CPU的數量,有沒有機會應用程序將被關閉的Android操作系統?
請分享討論此主題的任何資源和文檔。提前致謝。 :)
假設我正在使用內存和CPU密集型應用程序,並且我得到一個我一定會說的電話,比如一分鐘。在這種情況下,我想知道應用程序的命運。它會繼續在後臺執行嗎?它的優先級會被改變嗎?有通話時正在運行的應用程序會發生什麼情況?
此外,如果所有的應用程序使用更高的內存和CPU的數量,有沒有機會應用程序將被關閉的Android操作系統?
請分享討論此主題的任何資源和文檔。提前致謝。 :)
還會否繼續執行在後臺
至少在幾毫秒,是的。無論應用程序如何移動到後臺,只要在後臺運行,其進程都有資格終止,爲其他應用程序釋放內存。當發生這種情況取決於很多變量 - 可能是毫秒,可能是幾個小時。
並將其優先級改變?
後臺應用程序的進程運行在一個有助於限制CPU利用率的類中。
另外,如果所有的應用程序使用更高的內存和CPU的數量,有沒有機會應用程序將被關閉的Android操作系統?
不管的RAM和CPU量的,該應用程序的處理可以由Android在任何點處終止時,它是在背景中。
區分應用程序本身和被遮擋的Activity
很重要。 Activity
只是應用程序的一部分。當Activity
被隱藏時,某些lifecycle methods被稱爲depdning它是部分隱藏()還是完全隱藏(onStop
)。這並不一定會影響您在Activity
被遮擋之前啓動的後臺進程。即使隱藏了Activity
,該應用仍然存在。在給定的Activity
前臺運行時,後臺線程和服務將作爲現有應用程序進程的一部分繼續運行(假設操作系統資源不足)。
你應該做的是思考如何在其他生命週期方法(例如onResume
)內處理這些後臺進程的結果應該他們完成durring或模糊狀態結束後。