日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单页面跳转生命周期(简单清晰)

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单页面跳转生命周期(简单清晰) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景一: 退出后臺運行

點擊home鍵 ? ? onPause() ? onStop() ? ? 退出后 ?

①如果此時A位于棧頂 ?則調用A的onDestory();

②如果此時B位于棧頂 ?則先調用A的onDestory()再調用B的onDestory()

但是當你再次進入App時,再次退出后臺運行時 就不會再執行A或者B的onDestory()方法了,查詢了很久,也沒找到具體原因,但是看到一篇帖子 寫到:

  • Activity 的 onDestroy() 是系統回調函數, 調用時機是不確定的
  • 據張明云(編程,Andoid開發 話題的優秀回答者)所說,在finish()方法之后沒有立即執行onDestroy()方法,只是上述這個命題的一種情況,不僅如此,Activity的其他生民周期方法何時會調用也是不確定的,onDestroy沒有及時執行暫未找到有效的處理方法,但可以通過isFinishing()方法判斷 Activity 是否處于銷毀狀態。

場景二:A跳轉B ? B返回A

啟動A

先執行A的 ? ? ?onCreate() -->onStart()-->onResume() ? ?

A跳轉B

先執行A的 ?onPause() ?

再執行B的 ? ? ? onCreate() -->onStart()-->onResume()

后執行A的 ? ? onStop()

B返回A ? ? (這里已經測試過 ? 無論是點擊 手機上的物理鍵 還是調用 finish() 方法進行的返回 ? ?生命周期都是如下)

先執行B的 ? ?onPause()

再執行A的 ? ? onRestart() -->onStart()-->onResume()

后執行B的 ? ? ?onStop()-->onDestory()

場景三:橫豎屏切換 ? ??有三種情況(后面對所有的打印結果進行展示)

1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次

2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次,但是再切換成豎屏時 會多執行onConfigurationChanged()方法

3、設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法

onConfigurationChanged方法的作用

通過查閱Android API可以得知android:onConfigurationChanged實際對應的是Activity里的onConfigurationChanged()方法。
在AndroidManifest.xml中添加上訴代碼的含義是表示在改變屏幕方向、彈出軟件盤和隱藏軟鍵盤時,不再去執行onCreate()方法,而是直接執行onConfigurationChanged()。如果不申明此段代碼,按照Activity的生命周期,都會去執行一次onCreate()方法,而onCreate()方法通常會在顯示之前做一些初始化工作。所以如果改變屏幕方向這樣的操作都去執行onCreate()方法,就有可能造成重復的初始化,降低程序效率是必然的了,而且更有可能因為重復的初始化而導致數據的丟失。這是需要千萬避免的。

第一種情況
切換橫屏
onSaveInstanceState()--> ? ?保存數據
onPause()-->
onStop()-->
onDestroy()-->
onCreate()-->
onStart()-->
onRestoreInstanceState()--> ? ?恢復數據
onResume()-->

?

切換豎屏 ? 執行兩次

onSaveInstanceState()-->
onPause()-->
onStop()-->
onDestroy()-->
onCreate()-->
onStart()-->
onRestoreInstanceState()-->
onResume()-->

----------------------------------------------------
onSaveInstanceState()-->
onPause()-->
onStop()-->
onDestroy()-->
onCreate()-->
onStart()-->
onRestoreInstanceState()-->
onResume()-->

第二種情況

切換橫屏
onSaveInstanceState()--> ? ?保存數據
onPause()-->
onStop()-->
onDestroy()-->
onCreate()-->
onStart()-->
onRestoreInstanceState()--> ? ?恢復數據
onResume()-->

?

切換豎屏 ? 執行兩次

onSaveInstanceState()-->
onPause()-->
onStop()-->
onDestroy()-->
onCreate()-->
onStart()-->
onRestoreInstanceState()-->
onResume()-->

----------------------------------------------------
onSaveInstanceState()-->
onPause()-->
onStop()-->
onDestroy()-->
onCreate()-->
onStart()-->
onRestoreInstanceState()-->
onResume()-->

onConfigurationChanged()-->

第三種情況

橫屏

onConfigurationChanged()-->

豎屏

onConfigurationChanged()-->

?

以后遇到更多的場景再進行添加

總結

以上是生活随笔為你收集整理的简单页面跳转生命周期(简单清晰)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。