Activity也叫活動,是Android四大組件之一。
生命週期:
1、onCreate():Activity被創建,這個階段可以做一些初始化工作(界面、數據等)。
2、onRestart():Activity正在被重新啓動,這種情形一般是用戶行爲導致(按Home、進入新的Activity又重新回退)。
3、onStart():Activity被啓動,這個階段屬於可見但無法交互。
4、onResume():Activity處於前臺並可以進行交互。
5、onPause():Activity正在停止。
6、onStop():Activity即將停止。
7、onDestory():Activity被銷燬,這裏必須回收所有的系統資源。
典型情況下生命週期:
1、第一次啓動:onCreate、onStart、onResume。
2、打開新Activity或按Home進入桌面:onPause、onStop。(如果新Activity爲透明則不會回調onStop)。
3、再次回到原Activity:onRestart、onStart、onResume。
4、按下back鍵回退時:onPause、onStop、onDestory。
異常情況下生命週期:
1、Activity被系統殺死並重建:onPause/onSaveInstanceState(這兩個方法沒有既定的時序關係)、onStop、onDestory、onCreate、onStart、onRestoreInstanceState、onResume。
優先級:
1、前臺Activity:與用戶進行交互的Activity,優先級最高。
2、可見非前臺Activity:無法與用戶交互但可見的Activity(如打開了對話框),優先級次於前臺Activity。
3、後臺Activity:調用了Stop方法的Activity,優先級最低。
橫豎屏切換時不重建Activity方法:
在AndroidMenifest.xml中的activity節點加一個“configChange="orientation|screenSize"”即可。
啓動模式:
1、standard:標準模式,採用先進後出方法,每一次啓動都需創建新的Activity。
2、singleTop:棧頂複用模式,如果Activity位於棧頂,則無需新建Activity直接複用即可。
3、singleTask:棧內複用模式,如果Activity處於棧中,則會把排於其上的Activity都擠出棧內,然後複用。
4、singleInstance:單實例模式,具有此種模式的Activity會位於一個單獨的棧內。
設置啓動模式方法:
1、AndroidMenifest方式:在AndroidMenifest.xml中的activity節點加一個“launchMode="你想要的的模式"”即可。
2、代碼方式:通過給Intent增加標記位來設置啓動模式:intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
優先級第二種高於第一種,如果兩者同時存在,優先使用第二種。
Activity啓動方式:
1、顯示調用
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
2、隱式調用
隱式調用需要Intent能夠匹配目標組件中的IntentFilter中的所有的信息,包括action、category、data。
學習資料:Android開發藝術探索。