android Activity 的生命週期 以及橫屏豎屏切換時 Activity 的狀態變化

來源:互聯網
上載者:User

標籤:undle   資源   焦點   protected   pause   事件   create   完全   protect   

生命週期
Android 系統在Activity 生命週期中加入一些鉤子,我們可以在這些系統預留的鉤子中做一些事情。
例舉了 7 個常用的鉤子:
protected void onCreate(Bundle savedInstanceState)
protected void onStart()
protected void onResume()
protected void onPause()
protected void onStop()
protected void onRestart()
protected void onDestroy()

簡要說明:
onCreate(Bundle savedInstanceState):建立activity時調用。設定在該方法中,還以Bundle中可以提出用於建立該 Activity 所需的資訊。
onStart():activity變為在螢幕上對使用者可見時,即獲得焦點時,會調用。
onResume():activity開始與使用者互動時調用(無論是啟動還是重新啟動一個活動,該方法總是被調用的)。
onPause():activity被暫停或收回cpu和其他資源時調用,該方法用於儲存活動狀態的。。
onStop():activity被停止並轉為不可見階段及後續的生命週期事件時,即失去焦點時調用。
onRestart():重新啟動activity時調用。該活動仍在棧中,而不是啟動新的活動。
onDestroy():activity被完全從系統記憶體中移除時調用,該方法被調用可能是因為有人直接調用 finish()方法 或者系統決定停止該活動以釋放資源。

橫豎屏切換

1 切換到橫屏
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

2 切換到豎屏,銷毀了兩次
onSaveInstanceState
onPause
onStop
onDestroy

onCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

3 修改AndroidManifest.xml,把該Activity添加 android:configChanges="orientation",切橫屏,只銷毀一次。

onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

4 再切回豎屏,發現不會再列印相同資訊,但多列印了一行onConfigChanged

onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged

5 更改 android:configChanges="orientation" 改成 android:configChanges="orientation|keyboardHidden",切橫屏,就只列印onConfigChanged

onConfigurationChanged

6 切回豎屏

onConfigurationChanged
onConfigurationChanged

總結:

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

2、設定Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命週期,切橫、豎屏時只會執行一次

3、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命週期,只會執行onConfigurationChanged方法。(執行這個方法,必須設定sdk version 大於等於13.0)

android Activity 的生命週期 以及橫屏豎屏切換時 Activity 的狀態變化

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.