Android橫豎屏切換的生命周期

關于Android手機橫豎屏切換時Activity的生命周期問題,網上有很多相似的文章,大多數都是說明在豎屏切換橫屏時Activity會重啟一次,而在橫屏切換豎屏時Activity會重啟兩次。

我本身不太理解這樣設計的意義,并且覺得新版本會解決這個問題,所以做了一項測試,測試環境為Android 7.0模擬器。

測試首先創建一個新的Activity,并在其各個生命周期方法內打印日志,并執行如下操作得到結果:

targetSdkVersion的值大于12時

  1. Activity啟動

    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onResume
  2. 豎屏切換為橫屏

    I/System.out: onConfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveInstanceState
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onRestoreInstanceState
    I/System.out: onResume
  3. 橫屏切回豎屏

    I/System.out: onConfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveInstanceState
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onRestoreInstanceState
    I/System.out: onResume
  4. 配置android:configChanges="orientation|screenSize"后,豎屏切換為橫屏

    I/System.out: onConfigurationChanged
  5. 配置android:configChanges="orientation|screenSize"后,橫屏切回豎屏

    I/System.out: onConfigurationChanged

targetSdkVersion的值小于或等于12時

  1. Activity啟動

    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onResume
  2. 豎屏切換為橫屏

    I/System.out: onConfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveInstanceState
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onRestoreInstanceState
    I/System.out: onResume
  3. 橫屏切回豎屏

    I/System.out: onConfigurationChanged
    I/System.out: onPause
    I/System.out: onSaveInstanceState
    I/System.out: onStop
    I/System.out: onDestroy
    I/System.out: onCreate
    I/System.out: onStart
    I/System.out: onRestoreInstanceState
    I/System.out: onResume
  4. 配置android:configChanges="orientation"后,豎屏切換為橫屏

    I/System.out: onConfigurationChanged
  5. 配置android:configChanges="orientation"后,橫屏切回豎屏

    I/System.out: onConfigurationChanged

總結

可以發現新版本Android設備上的運行結果和網上的結論并不完全相同,在橫豎屏切換時,都會調用一次onConfigurationChanged,并重啟Activity一次,具體的生命周期為:

I/System.out: onConfigurationChanged
I/System.out: onPause
I/System.out: onSaveInstanceState
I/System.out: onStop
I/System.out: onDestroy
I/System.out: onCreate
I/System.out: onStart
I/System.out: onRestoreInstanceState
I/System.out: onResume

targetSdkVersion的值小于或等于12時,配置android:configChanges="orientation"
targetSdkVersion的值小于或等于12時,配置android:configChanges="orientation|screenSize"
可以做到攔截Activity的重新創建:

I/System.out: onConfigurationChanged

后續

將會對過去版本的Android設備做相應的測試,來驗證得到結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260595.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 隨機字符串_python生成隨機數、隨機字符串

python生成隨機數、隨機字符串 import random import string # 隨機整數: print random.randint(1,50) # 隨機選取0到100間的偶數: print random.randrange(0, 101, 2) # 隨機浮點數: print random.random() print random.uniform(1, 10) # 隨…

ACM 會場安排問題

會場安排問題 時間限制:3000 ms | 內存限制:65535 KB難度:4描述學校的小禮堂每天都會有許多活動,有時間這些活動的計劃時間會發生沖突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,…

第5章 Python 數字圖像處理(DIP) - 圖像復原與重建11 - 空間濾波 - 自適應濾波器 - 自適應局部降噪、自適應中值濾波器

標題自適應濾波器自適應局部降噪濾波器自適應中值濾波器自適應濾波器 自適應局部降噪濾波器 均值是計算平均值的區域上的平均灰度,方差是該區域上的圖像對比度 g(x,y)g(x, y)g(x,y)噪聲圖像在(x,y)(x, y)(x,y)處的值 ση2\sigma_{\eta}^2ση2? 為噪聲的方差&am…

關閉防火墻_從零開始學Linux運維|09.關閉防火墻和SElinux

firewalld是centos7默認的防火墻安全增強型 Linux(Security-Enhanced Linux)簡稱 SELinux初學者建議先關閉,等熟悉了之后再來使用前期聯系中的好多錯誤都有可能是由于沒有關閉或者正確配置上面兩項造成的1.臨時關閉centos7下的防火墻firewalld一行命令就能夠關閉firewalld--&qu…

Discuz!NT - 在線顯示列表 游客 bug 修復

引發bug的條件:當你修改了系統組里面的[游客]組 的名字后!! 你會發現首頁上底部的在線顯示列表里始終都是顯示"游客"字樣而非你改過得字樣!如圖 至此你需要運行一個t-sql腳本去修復這個bug!(但是…

Linux查看物理CPU個數、核數、邏輯CPU個數

# 總核數 物理CPU個數 X 每顆物理CPU的核數 # 總邏輯CPU數 物理CPU個數 X 每顆物理CPU的核數 X 超線程數# 查看物理CPU個數 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每個物理CPU中core的個數(即核數) cat /proc/cpuinfo| grep "cpu …

基于空間方法的圖神經網絡模型_用于時空圖建模的圖神經網絡模型 Graph WaveNet | 課程上新...

課程概要本課程來自集智學園圖網絡論文解讀系列活動。是對論文《Graph WaveNet for Deep Spatial-Temporal Graph Modeling》的解讀。時空圖建模 (Spatial-temporal graph modeling)是分析系統中組成部分的空間維相關性和時間維趨勢的重要手段。已有算法大多基于已知的固定的圖…

dataframe類型數據的遍歷_Python零基礎入門到爬蟲再到數據分析,這些你都是要學會的...

1.必須知道的兩組Python基礎術語A.變量和賦值Python可以直接定義變量名字并進行賦值的,例如我們寫出a 4時,Python解釋器干了兩件事情:在內存中創建了一個值為4的整型數據在內存中創建了一個名為a的變量,并把它指向4用一張示意圖表…

第5章 Python 數字圖像處理(DIP) - 圖像復原與重建12 - 空間濾波 - 使用頻率域濾波降低周期噪聲 - 陷波濾波、最優陷波濾波

標題使用頻率域濾波降低周期噪聲陷波濾波深入介紹最優陷波濾波本章陷波濾波器有部分得出的結果不佳,如果有更好的解決方案,請賜教,不勝感激。 使用頻率域濾波降低周期噪聲 陷波濾波深入介紹 零相移濾波器必須關于原點(頻率矩形中心)對稱&a…

Android之Menu動態改變文字

Menu創建: Override//這里遇到一個問題add的是MenuItem的idpublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubmenu.add(0,1023, 0, "一");menu.add(0,1022, 1, "開啟線程");Log.e("onCreateOptionsMenu…

iOS 開發周報:Apple 發布 iPhone 7 / 7 Plus 、Apple Watch 2 等新品

新聞\\Apple 發布 iPhone 7 / 7 Plus 、Apple Watch 2 等新品:Apple 正式發布了 iPhone 7 / 7 Plus、Apple Watch 2 新品,帶來 AirPods 無線耳機,并把馬里奧帶進了 iOS。iPhone 7 新增亮黑色,移除3.5mm 耳機孔,支持 IP…

python寫界面c這算法_插入算法分別從C,java,python三種語言進行書寫

真正學懂計算機的人(不只是“編程匠”)都對數學有相當的造詣,既能用科學家的嚴謹思維來求證,也能用工程師的務實手段來解決問題——而這種思維和手段的最佳演繹就是“算法”。 作為一個初級編程人員或者說是一個程序員&#xff0c…

去掉xcode中警告的一些經驗

1、編譯時,編譯警告忽略掉某些文件 只需在在文件的Compiler Flags 中加入 -w 參數,例如: 2、編譯時,編譯警告忽略掉某段代碼 #pragma clang diagnostic push#pragma clang diagnostic ignored "-Wmultichar"char b df;…

富士施樂3065掃描教程_全面支持IT國產化 富士施樂70款機型獲統信UOS兼容認證

最近,富士施樂(中國)有限公司宣布共70款機型獲得國產操作系統統信UOS的兼容認證,其中包括新一代ApeosPort旗艦智能型數碼多功能機、多功能一體機/打印機、生產型數字印刷系統。這是繼獲得中標麒麟、龍芯和兆芯兼容認證后&#xff…

Flash系統字體中的中文字體問題

在flash中使用as來改變textfield的中文字體 ,遇到發布版本超過10.2的時候,會悲劇!不支持使用中文名稱來改變字體。 解決辦法:1)使用英文名稱。2)發布的版本低于10.2 label:TextField new TextField(); for…

第5章 Python 數字圖像處理(DIP) - 圖像復原與重建13 - 空間濾波 - 線性位置不變退化 - 退化函數估計、運動模糊函數

標題線性位置不變退化估計退化函數采用觀察法估計退化函數采用試驗法估計退化函數采用建模法估計退化函數運動模糊函數OpenCV Motion Blur在這一節中,得到的結果,有些不是很好,我需要再努力多找資料,重新完成學習,如果…

視覺感受排序算法

1. 快速排序 介紹: 快速排序是由東尼霍爾所發展的一種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況并不常見。事實上,快速排序通常明顯比其他Ο(n log n) 算法更快&…

python如何自定義函數_python如何自定義函數_后端開發

c語言特點是什么_后端開發 c語言特點是:1、語言簡潔、緊湊,使用方便、靈活;2、運算符豐富;3、數據結構豐富,具有現代化語言的各種數據結構;4、具有結構化的控制語句;5、語法限制不太嚴度格&…

js/css 檢測移動設備方向的變化 判斷橫豎屏幕

js/css 檢測移動設備方向的變化 判斷橫豎屏幕 方法一:用觸發手機的橫屏和豎屏之間的切換的事件 window.addEventListener("orientationchange", function() { // 宣布新方向的數值 alert(window.orientation); }, false); // 方法二&#xff1…

第5章 Python 數字圖像處理(DIP) - 圖像復原與重建14 - 逆濾波

標題逆濾波逆濾波逆濾波 逆濾波 圖像的退化函數已知或者由前面的方法獲取退化函數,則可以直接逆濾波 F^(u,v)G(u,v)H(u,v)(5.78)\hat{F}(u,v) \frac{G(u,v)}{H(u,v)} \tag{5.78}F^(u,v)H(u,v)G(u,v)?(5.78) F^(u,v)F(u,v)N(u,v)H(u,v)(5.79)\hat{F}(u,v) F(u, …