Android什么時候只會調用onPause()而不會調用onStop()完全解析?


今天突然有人問到標題的問題。瞬間來了興趣。居然還可以這么玩?查看了網上的介紹。原理上的東西都有。但是好多沒有真正測試,都是一個亂寫其他人轉載,看樣子他們也沒測試啊。下面我就真正寫一下這個程序。做一下總結:

一、實現原理:

圖片顯示是官方文檔介紹,可以看到要調用onPause()Activity必須Leavesforeground,查了下,好像是Activity必需離開Activity棧的棧頂,以上說法是別人的介紹。復制來的。

二、FirstAcitvity 通過第一個頁面實現。

創建新的程序。命名為FirstActivity。


程序在啟動的時候,執行的生命周期是:

FirstActivity---onCreate

FirstActivity---onStart

FirstActivity---onResume

鎖屏執行的生命周期是:

 FirstActivity---onPause

FirstActivity---onStop

進入后台的快捷鍵操作執行生命周期:

FirstActivity---onPause

FirstActivity---onStop

好多人介紹當彈出Dialog 的時候可以出現標題的效果。

點擊FirstActivity 的 彈出dialog按鈕。彈出dialog.


發現 7個主要生命周期,一個也不走。根本沒有效果。所以網上好多人根本沒測試過。只是一味的轉載。發現單個頁面似乎實現不大可能!


三、通過SecondActivity來輔助實現。

新建Activity,命名為SecondActivity .

    因為在Activity的跳轉時候也會執行這個這些生命周期。所以新建第二個頁面,讓他從第一個頁面Intent過來。首先執行正常流程:點擊FirstActivity頁面按鈕從FirstActivity跳轉到SecondActivity.執行生命周期:

FirstActivity---onPause
 SecondActivity---onCreate
 SecondActivity---onStart
 SecondActivity---onResume
 FirstActivity---onStop

發現此時依舊沒有實現效果。

解決方案如下:

   修改 AndroidManifest.xml中SecondAcitvity屬性。

方案1:添加  android:theme="@android:style/Theme.Dialog" 。將Activity修改為Dialog樣式。

效果:


生命周期執行過程:

FirstActivity---onPause
 SecondActivity---onCreate
 SecondActivity---onStart
SecondActivity---onResume

效果實現Ok了

方案2 :修改 AndroidManifest.xml中SecondAcitvity屬性。android:theme="@android:style/Theme.Translucent" 

生命周期執行過程:

FirstActivity---onPause
 SecondActivity---onCreate
 SecondActivity---onStart
SecondActivity---onResume

效果實現Ok了

但是第二個頁面是完全透明度。什么用?實際業務場景真的會用到嗎








注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: