Android7.0 分屏 Activity 與 Fragment 生命周期(二)

??????小菜前段時(shí)間整理過(guò)一些關(guān)于 Activity 與 Fragment 生命周期的小博文:Android7.0 分屏下 Activity 與 Fragment 生命周期(一)我們真的了解 Activity 與 Fragment 的生命周期嗎?今天繼續(xù)這個(gè)話題,稍稍整理一下,在 Android7.0 分屏情況下,兩個(gè) Activity 的生命周期之間的執(zhí)行順序,且同樣暫不研究橫豎屏切換時(shí)的過(guò)程。
??????小菜根據(jù)輸出的兩個(gè) Demo 生命周期簡(jiǎn)單整理一下交互間的執(zhí)行順序。


小菜操作步驟如下:

  1. 首次啟動(dòng)初始化 ACE09_1,其執(zhí)行生命周期為:onCreate -> onStart -> onResume;

  2. 點(diǎn)擊手機(jī)的【任務(wù)鍵】, ACE09_1 其執(zhí)行生命周期為:onPause -> onStop;

  3. ACE09_1 進(jìn)行分屏操作,占據(jù)屏幕一半,其執(zhí)行生命周期為:onDestroy -> onCreate -> onStart -> onResume -> onPause;

  4. 操作屏幕未擋住的下半部分,首次啟動(dòng)初始化 ACE09_2,其執(zhí)行生命周期為:onCreate -> onStart -> onResume;若 ACE09_2 已啟動(dòng)處于后臺(tái),則此時(shí)生命周期為:onDestroy -> onCreate -> onStart -> onResume;


  5. 此時(shí)點(diǎn)擊 ACE09_2 不會(huì)執(zhí)行任何生命周期,因?yàn)榇藭r(shí) ACE09_2 是最新的操作頁(yè)面;但若點(diǎn)擊 ACE09_1 屏幕時(shí),執(zhí)行的生命周期為:ACE09_2 onPause -> ACE09_1 onResume;此時(shí) ACE09_1 處于 onResume 狀態(tài),ACE09_2 處于 onPause 狀態(tài),若再點(diǎn)擊 ACE09_2 屏幕時(shí),執(zhí)行生命周期為:ACE09_1 onPause -> ACE09_2 onResume;


  6. 此時(shí) ACE09_1ACE09_2 分別占據(jù)屏幕的一半,調(diào)整屏幕比例,ACE09_1 屏幕范圍超過(guò)手機(jī)屏幕一半,此時(shí)響應(yīng)的 ACE09_2 占據(jù)剩余不足半個(gè)手機(jī)屏幕范圍,此時(shí)生命周期:ACE09_1 (onPause ->) onStop -> onDestroy -> onCreate -> onStart -> onResume -> onPause;若調(diào)整的是 ACE09_2 屏幕范圍超過(guò)手機(jī)屏幕一半,執(zhí)行的則是 ACE09_2 的生命周期,與剛才一致。重點(diǎn)是 onPause 是否執(zhí)行,則需要看哪個(gè) Activity 的當(dāng)前狀態(tài),若處于 onResume 狀態(tài)則先執(zhí)行 onPause,若正好處于 onPause 狀態(tài)則不再執(zhí)行 onPause 狀態(tài)。

  7. 此時(shí)兩個(gè) Activity 處于一個(gè)大于手機(jī)屏幕一半,另一個(gè)占據(jù)另一部分,若調(diào)整屏幕范圍,使兩個(gè) Activity 各占據(jù)手機(jī)屏幕一半,其執(zhí)行生命周期為:(onPause ->) onStop -> onDestroy -> onCreate -> onStart -> onResume;執(zhí)行的生命周期是屏幕范圍占據(jù)超過(guò)手機(jī)屏幕一半的 Activity,同樣 onPause 是否執(zhí)行則需要看哪個(gè) Activity 的當(dāng)前狀態(tài),若處于 onResume 狀態(tài)則先執(zhí)行 onPause,若正好處于 onPause 狀態(tài)則不再執(zhí)行 onPause 狀態(tài)。

  8. 由第 6 步后,調(diào)整屏幕分割線,使占據(jù)屏幕超過(guò)一半的 Activity 與少于屏幕一半的 Activity 對(duì)調(diào),Demo 測(cè)試 ACE09_1 占據(jù)屏幕由大到小,其執(zhí)行順序?yàn)椋?strong>ACE09_2
    onPause -> onStop -> ACE09_1 onStop -> ACE09_2 onDestroy -> ACE09_1 onDestroy -> ACE09_2 onCreate -> onStart -> onResume -> ACE09_1 onCreate -> onStart -> onResume -> onPause;
    Tips:
    <1> 此時(shí)的生命周期的執(zhí)行順序并不是絕對(duì)的,優(yōu)先執(zhí)行哪個(gè) Activity 生命周期需要看這個(gè) Activity 是否處于 onResume 狀態(tài);
    <2> 兩個(gè) Activity 都需要先銷毀完成后,再重新繪制;而在銷毀和創(chuàng)建過(guò)程中,兩個(gè) Activity 的生命周期是交互進(jìn)行的,并非先執(zhí)行完一個(gè)以后在執(zhí)行另一個(gè) Activity 的生命周期。

  9. 測(cè)試 ACE09_1 在屏幕上半部分,ACE09_2 處于屏幕下半部分,調(diào)整屏幕分割線,將處于下半部分的 Activity 劃到底部,只留下上半部分 Activity,此時(shí)生命周期為:ACE09_1 onStop -> onDestroy -> onCreate -> onStart -> onResume -> onPause -> ACE09_2 onPause -> onStop -> ACE09_1 onResume,其生命周期并不絕對(duì),是兩個(gè) Activity 交互執(zhí)行;調(diào)整屏幕分割線,將處于上半部分 Activity 劃到頂部,只留下下半部分 Activity,此時(shí)生命周期為:ACE09_2 onPause -> onStop -> onDestroy -> onCreate -> onStart -> onResume -> ACE09_1 onStop

  1. 點(diǎn)擊手機(jī)【分屏】按鍵,會(huì)將處于屏幕下半部分的 Activity 關(guān)閉,執(zhí)行周期為:onPause -> onStop;


  2. ACE09_2 處于屏幕下半部分,且處于 onResume 狀態(tài),此時(shí)點(diǎn)擊屏幕【返回】按鍵,此時(shí) ACE09_2 會(huì)銷毀,而 ACE09_1 不變,不會(huì)占據(jù)整個(gè)屏幕,此時(shí)生命周期為:ACE09_2 onPause -> onStop -> onDestroy;若 ACE09_2 處于屏幕下半部分,且 ACE09_1 處于 onResume 狀態(tài),此時(shí)點(diǎn)擊屏幕【返回】按鍵,此時(shí) ACE09_1 會(huì)銷毀,且 ACE09_2 會(huì)占據(jù)整個(gè)屏幕范圍,其執(zhí)行周期為:ACE09_1 onPause -> ACE09_2 onResume -> ACE09_1 onStop -> onDestroy -> ACE09_2 onPause -> onStop -> onDestroy -> onStart -> onResume。

來(lái)源: 阿策小和尚

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android的開(kāi)發(fā)中我們大部分都是和Activity打交道,而想很好的運(yùn)用Activity首先必須要清楚Acti...
    云天隨筆閱讀 1,328評(píng)論 0 1
  • 啟動(dòng)與銷毀Activity 不同于使用 main() 方法啟動(dòng)應(yīng)用的其他編程范例,Android 系統(tǒng)會(huì)通過(guò)調(diào)用對(duì)...
    安卓Boy閱讀 1,882評(píng)論 3 5
  • 啟動(dòng)與銷毀Activity 不同于使用 main() 方法啟動(dòng)應(yīng)用的其他編程范例,Android 系統(tǒng)會(huì)通過(guò)調(diào)用對(duì)...
    mouekz閱讀 718評(píng)論 0 0
  • 1.正常情況下的生命周期 1.onCreate: 與onDestory配對(duì),表示Activity被創(chuàng)建,這是生命...
    S_ZY閱讀 855評(píng)論 0 6
  • 故事發(fā)生在一對(duì)兄弟身上……有為銀行家有兩個(gè)孫子,銀行家很疼愛(ài)他們。哥哥經(jīng)常陪祖父去聽(tīng)法,后來(lái)就出家為僧了,后來(lái),他...
    云峰寺小和尚閱讀 504評(píng)論 0 0

友情鏈接更多精彩內(nèi)容