Android – 暫停繼續的生命週期

在Activity的生命週期中, 有一種狀況較為特殊, 就是在官方網站提及的:

從 Running 狀態, 執行到 onPause() 之後就停住的暫停狀態. 而之後會從暫停狀態, 執行到 onResume() 而再度進入到 Running 狀態. 也就是上圖中虛線區域所標示的部分.

在官方網站中提及: https://developer.android.com/training/basics/activity-lifecycle/pausing.html?hl=zh-tw

引述如下:


在應用程式正常使用期間,有時前景應用行為顯示會受到其他視覺元件的遮蓋,導致該應用行為顯示暫停。 例如,若開啟半透明的應用行為顯示 (諸如採用對話方塊風格的應用行為顯示),前一個應用行為顯示會暫停。 只要應用行為顯示仍部分可見,但目前並非焦點,就會保持暫停狀態。

……

若半透明的應用行為顯示遮蓋您的應用行為顯示,系統會呼叫 onPause(),您的應用行為顯示會進行等候 (狀態為「已暫停」) 。 若使用者在應用行為顯示仍處於暫停狀態時返回至應用行為顯示,系統將呼叫 onResume() 。


以上內容真的不容易看懂, 也不容易做出相關的實驗結果.

從半透明的應用行為, 原本以為是處在呈現 Dialog 的狀態, Activity 的 UI 將會是半透明狀態, 但是經過實驗結果, 並不會有任何改變, 仍然是處在 Running 狀態.

事實上, 所謂的半透明狀態, 指的是有其他應用程式的 UI 覆蓋在上面, 這時候的狀態, 就會進入執行到 onPause(), 但是並沒有 onStop(),

假設安裝了 WhoCall 的 app, 當執行中的 app, 正在 Running 狀態, 此時來了電話, app 會 onPause(), onStop(), 通話狀態解除之後, onRestart(), onStart(), onResume(), 再度回到 Running 狀態, 但是因為被WhoCall 攔截訊息,  所以馬上進入呼叫 onPause() 就停在此階段, 也就是被 WhoCall 所導致.

在這樣的狀態模式下, onPause() 會關閉裝置感應相關應用, 例如感應器, 相機等等, 直到 onResume() 再度開啟使用.

 

 

 

本站資源一切隨緣,
不用註冊, 不看廣告
如果對您有所助益,
歡迎功德隨喜, 金額隨意,
請點擊以下...(感謝您)

功德箱/打賞箱

%d bloggers like this: