簡體   English   中英

取決於屏幕關閉方式的不同行為

[英]Different behavior depending upon how screen is turned off

根據屏幕的關閉方式,我發現一種奇怪的情況。 如果Android關閉屏幕或按下電源按鈕以關閉屏幕,則我的應用程序將paused 按下電源按鈕以重新打開屏幕時,該應用不會 resumes 問題 幾分鍾或數十分鍾后,情況就是如此。

這是它偏離的地方。 如果my app turns the screen off ,我的應用程序pauses的預期,但我的應用程序也當即斃命

使用電源按鈕重新打開屏幕時,該應用程序不再運行

我設置了日志記錄來確認這一點,但是為什么行為有所不同?

您所看到的行為實際上是預期的,Android設備中運行的每個進程都有一個優先級,一旦您的應用程序暫停,如果另一個優先級更高的進程需要內存,則操作系統可能會刪除它,根據谷歌的文檔:

Android系統嘗試盡可能長時間地維護應用程序進程,但最終需要刪除舊進程以為新的或更重要的進程回收內存。 為了確定保留哪些進程以及殺死哪些進程,系統會根據進程中運行的組件以及這些組件的狀態,將每個進程置於“重要性層次結構”中。 為了恢復系統資源,必須先刪除重要性最低的進程,然后再刪除重要性次低的進程,依此類推。

如前所述,“基於進程中運行的組件”意味着您的應用程序在OS中的排名可能不高,因為您可能尚未運行Service等,因此最終被殺死。

您可以查看以下文檔: http : //developer.android.com/guide/components/processes-and-threads.html ,它說明了流程生命周期,應該使您更好地理解如何處理它。 ...

在使電池在Android設備中使用更長時間的斗爭中,還有一個:設備的掛起/恢復狀態。 暫停和恢復按三個步驟進行,因此最好一起討論。 基本上,當使用電源按鈕將設備掛起或屏幕保護程序超時到期時,設備將掛起。 如果再次按下電源按鈕,它將恢復到鎖定屏幕。 此時,如果用戶解鎖設備,則該應用程序將恢復。 如果用戶等待幾秒鍾而未解鎖鎖定屏幕,則設備將再次掛起。

由於這顯然是一種低功耗狀態,因此該應用程序應該已經停止了所有渲染和聲音,並且可能停止了不需要100%的任何后台處理即可保持該應用程序正常運行。

問候!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM