面試被問到橫豎屏切換時(shí)Activity的生命周期,正好記錄一下驗(yàn)證過(guò)程~

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),霍林郭勒網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:霍林郭勒等地區(qū)。霍林郭勒做網(wǎng)站價(jià)格咨詢:028-86922220
新建Activity,重寫各個(gè)生命周期方法:
運(yùn)行Activity,生命周期如下:
切換橫屏,生命周期如下:
再切回豎屏,生命周期如下:
修改AndroidManifest.xml,添加 android:configChanges="orientation" 并切換橫屏,生命周期如下:
再切換豎屏,生命周期如下:
修改AndroidManifest.xml,屬性改為 android:configChanges="orientation|keyboardHidden|screenSize" ,切換橫屏,生命周期如下:
再切換回豎屏,生命周期如下:
標(biāo)簽中設(shè)置:android:screenOrientation
Activity 在設(shè)備上的顯示方向。如果 Activity 是在 多窗口模式 下運(yùn)行,系統(tǒng)會(huì)忽略該屬性。
其值可以是下列任一字符串:
例如: android:screenOrientation="landscape" 橫屏 android:screenOrientation="portrait" 豎屏
onCreate ,
創(chuàng)建activity時(shí)調(diào)用。設(shè)置在該方法中,還以Bundle中可以提出用于創(chuàng)建該 Activity 所需的信息。
onStart ,
activity變?yōu)樵谄聊簧蠈?duì)用戶可見時(shí),即獲得焦點(diǎn)時(shí),會(huì)調(diào)用。
onResume ,
activity開始與用戶交互時(shí)調(diào)用(無(wú)論是啟動(dòng)還是重新啟動(dòng)一個(gè)活動(dòng),該方法總是被調(diào)用的)
onSaveInstanceState
onPause ,
activity被暫停或收回cpu和其他資源時(shí)調(diào)用,該方法用于保存活動(dòng)狀態(tài)的
onStop ,
activity被停止并轉(zhuǎn)為不可見階段及后續(xù)的生命周期事件時(shí),即失去焦點(diǎn)時(shí)調(diào)用
onDestroy ,
activity被完全從系統(tǒng)內(nèi)存中移除時(shí)調(diào)用,該方法被調(diào)用可能是因?yàn)橛腥酥苯诱{(diào)用 finish()方法 或者系統(tǒng)決定停止該活動(dòng)以釋放資源。
onRestoreInstanceState ,
Android在橫豎排切換時(shí)候,將主動(dòng)銷毀activity和重新創(chuàng)建一個(gè)新的activity出來(lái),在此過(guò)程中,onRestoreInstanceState就要被回調(diào)
onConfigurationChanged ,
配置指定屬性后,屏幕方向發(fā)生變化后回調(diào)此函數(shù).
把該Activity添加
android:configChanges="orientation" ,
執(zhí)行步驟3(切換成橫屏?xí)r)
android:configChanges="orientation" 對(duì)于4.04.0以上版本不生效
把該Activity添加 android:configChanges="orientation|screenSize" ,
執(zhí)行步驟3(切換成橫屏?xí)r)
onConfigurationChanged--
只打印onConfigChanged
把 android:configChanges="orientation|screenSize" 改成 android:configChanges="orientation|keyboardHidden|screenSize"
執(zhí)行步驟3(切換橫屏幕)
只打印
onConfigChanged
執(zhí)行步驟4(切換豎屏幕)
只打印onConfigChanged
切記一定要加上后邊的screenSize否則在4.0以上版本生命周期執(zhí)行不生效。
當(dāng)前Activity產(chǎn)生事件彈出Toast和AlertDialog的時(shí)候Activity的生命周期不會(huì)有改變
Activity運(yùn)行時(shí)按下HOME鍵(跟被完全覆蓋是一樣的):
onPause -- onStop onRestart --onStart---onResume
Activity未被完全覆蓋只是失去焦點(diǎn):onPause---onResume
測(cè)試用手機(jī)版本5.1.1
Android實(shí)現(xiàn)屏幕旋轉(zhuǎn)方法
這種方法的優(yōu)點(diǎn):即使屏幕旋轉(zhuǎn),Activity也不會(huì)重新onCreate。
缺點(diǎn):屏幕只有一個(gè)方向。
這個(gè)方法的優(yōu)點(diǎn):我們可以隨時(shí)監(jiān)聽屏幕旋轉(zhuǎn)變化,并對(duì)應(yīng)做出相應(yīng)的操作;
缺點(diǎn):它只能一次旋轉(zhuǎn)90度,如果一下子旋轉(zhuǎn)180度,onConfigurationChanged函數(shù)不會(huì)被調(diào)用。
4.設(shè)置方向的其他方式
在AndroidManifest.xml設(shè)置
橫向顯示,但是基于設(shè)備傳感器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"
縱向顯示,但是基于設(shè)備傳感器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"
demo
以華為Mate40手機(jī)為例:
升級(jí)HarmonyOS系統(tǒng)后,從屏幕右側(cè)頂部下滑出控制中心界面,點(diǎn)擊自動(dòng)旋轉(zhuǎn)開啟屏幕自動(dòng)旋轉(zhuǎn)功能。
當(dāng)前標(biāo)題:android橫豎屏切換,android橫豎屏切換的生命周期
網(wǎng)站網(wǎng)址:http://chinadenli.net/article16/dsgdegg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站制作、定制開發(fā)、App開發(fā)、做網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)