典型情況下的生命周期 onCreate 表示創建Acticity,在這個方法中可以做一些初始化的操作,如載入界面佈局資源,初始化Activity所需的數據 onRestart 表示重新啟動Activity,正常情況下,當前Activity從不見到可見,就會調用此方法。 onStart 表示啟動Act ...
典型情況下的生命周期
onCreate
表示創建Acticity,在這個方法中可以做一些初始化的操作,如載入界面佈局資源,初始化Activity所需的數據
onRestart
表示重新啟動Activity,正常情況下,當前Activity從不見到可見,就會調用此方法。
onStart
表示啟動Acticity,這個時候Activity可見,但是不能進行UI交互。
onResume
表示Activity出現到前臺,可與之交互。
onPause
表示Activity正在暫停,接著會執行onStop。這個方法中可以做一些數據存儲,停止動畫,但不能耗時操作,不然Activity之間的切換會有卡頓,不自然。
onStop
表示Activity馬上就會停止,可以做一些稍微耗時的回收工作。
onDestroy
表示Activity即將銷毀,在這個方法中做一些回收工作和資源的釋放。
兩個Acticity之間切換的生命周期:第一個Activity執行onPause後,第二個Activity執行onCreate -> onStart ->onResume,第一個Activity再執行onStop。
異常情況下的生命周期
1、資源相關的系統配置發生改變導致Activity被殺死並重新創建:
正常周期依舊會被調用,但是會調用onSaveInstanceState,當重新創建後會調用onRestoreInstanceState,我們可以利用這個特性來保存恢複數據。
2、資源不足導致低優先順序的Activity被殺死:
- 前臺Activty -- 正在和用戶交互的Activity,優先順序最高
- 可見但非前臺Activity
- 後臺Activity -- 已經被暫停的Activity,比如執行的onStop,優先順序最低。
為了防止被系統殺死,後臺工作一般放在Service中執行,防止系統輕易殺死。
Activity啟動模式
當應用運行起來後就會開啟一條線程,線程中會運行一個任務棧,當Activity實例創建後就會放入任務棧中。Activity啟動模式的設置在AndroidManifest.xml文件中,通過配置Activity的屬性android:launchMode=""設置。
1.Standard模式(預設)
我們平時直接創建的Activity都是這種模式的Activity,這種模式的Activity的特點是:只要你創建了Activity實例,一旦激活該Activity,則會向任務棧中加入新創建的實例,退出Activity則會在任務棧中銷毀該實例。
2.SingleTop模式
這種模式會考慮當前要激活的Activity實例在任務棧中是否正處於棧頂,如果處於棧頂則無需重新創建新的實例,會重用已存在的實例,否則會在任務棧中創建新的實例。
3.SingleTask模式
如果任務棧中存在該模式的Activity實例,則把棧中該實例以上的Activity實例全部移除,調用該實例的newInstance()方法重用該Activity,使該實例處於棧頂位置,否則就重新創建一個新的Activity實例。
4.SingleInstance模式
當該模式Activity實例在任務棧中創建後,只要該實例還在任務棧中,即只要激活的是該類型的Activity,都會通過調用實例的newInstance()方法重用該Activity,此時使用的都是同一個Activity實例,它都會處於任務棧的棧頂。此模式一般用於載入較慢的,比較耗性能且不需要每次都重新創建的Activity。