Android橫豎屏切換測試記錄

2021-10-08 17:23:54 字數 1882 閱讀 2498

android:configchanges

切橫屏生命週期

切豎屏生命週期

總結不設定

onpause()

ondestroy()

oncreate()

onresume()

onpause()

ondestroy()

oncreate()

onresume()

橫豎屏切換activity都只重新建立一次。

(網上說的切橫屏oncreate()執行乙個,切豎屏oncreate()執行兩次應該是android早期版本的效果,現在都只建立一次)

「orientation|keyboardhidden」

onpause()

ondestroy()

oncreate()

onresume()

onpause()

ondestroy()

oncreate()

onresume()

同不設定,橫豎屏切換activity都只重新建立一次。

(網上說的只設定這個就可以不用重新建立activity,也是android早期版本的效果,現在還需要加screensize)

「orientation|keyboardhidden|screensize」

onconfigurationchanged()

onconfigurationchanged()

不論怎麼轉都只執行onconfigurationchanged()

測試橫豎屏時順帶測了切後台再顯示,**中三種情況都是切後台執行一次onpause(),再顯示執行兩次onresume()。在onrestart()方法中也列印了onresume導致認為執行了兩次onresume(),其實再顯示是先執行了一次onrestart(),再執行一次onresume()

具體 activity 生命週期如下表:

首次建立

跳轉其它activity

或切後台

或息屏再顯示

銷毀oncreate()

onstart()

onresume()

onpause()

onstop()

onrestart()

onstart()

onresume()

onpause()

onstop()

ondestroy()

除了跳轉其它activity、切後台、息屏會觸發生命週期的onpause、onstop,其它覆蓋activity的情況都不會影響生命週期,具體情況有:

android:configchanges不設定或者只設定"orientation|keyboardhidden",activity的oncreate()方法會重新執行,會重新觸發setcontentview(r.layout.***x),系統會根據螢幕橫豎屏狀態再次選擇使用layout-land中布局還是layout-port中布局。

android:configchanges設定"orientation|keyboardhidden|screensize",activity只執行onconfigurationchanged(),所以橫豎屏切換前顯示的是layout-land和layout-port中的哪種布局,切換後顯示的還是那種布局,要想切換必須在onconfigurationchanged()方法中新增對布局的改變方法,至於新增什麼方法還沒有好的思路。

android 橫豎屏切換

private onclicklistener onclick new onclicklistener else 監聽系統設定的更改 override public void onconfigurationchanged configuration newconfig 在4.0以後需要加上scree...

Android 橫豎屏切換

今天老闆讓我看看有沒有辦法能讓我的背景桌布自己橫豎螢幕切換,今天發表下研究的成果。1.首先有時候開發的時候需要強制橫屏或者豎屏的時候,只需要在androidmanifest.xml中設定activity的android screenorientatation屬性就行了。unspecified 預設值...

Android橫豎屏切換

在 androidmanifest.xml 檔案的activity 設定android screenorentation 屬性 unspecified 預設值 由系統來判斷顯示方向.判定的策略是和裝置相關的,所以不同的裝置會有不同的顯示方向.landscape 橫屏顯示 寬比高要長 portrait...