簡單來講就是用來和用戶交互的界面,由各個控件組成 ,將內容界面化展示於用戶面前,接收用戶的觸摸事件和用戶進行交互,能夠說是使用最頻繁的組件了。java
生命週期: onCreate -> onStart -> onResume ->onPause -> onStop-> onDestroy 以及 onRestart 方法android
一個Activity從建立到銷燬的生命週期流程以下:數據結構
開啓一個界面app
2019-01-26 15:36:04.134 30064-30064/com.sjc.myapplication I/生命週期-----MainActivity: onCreate:
2019-01-26 15:36:04.207 30064-30064/com.sjc.myapplication I/生命週期-----MainActivity: onStart:
2019-01-26 15:36:04.221 30064-30064/com.sjc.myapplication I/生命週期-----MainActivity: onResume:
複製代碼
按下返回鍵ide
2019-01-26 15:36:12.381 30064-30064/com.sjc.myapplication I/生命週期-----MainActivity: onPause:
2019-01-26 15:36:12.943 30064-30064/com.sjc.myapplication I/生命週期-----MainActivity: onStop:
2019-01-26 15:36:12.944 30064-30064/com.sjc.myapplication I/生命週期-----MainActivity: onDestroy:
複製代碼
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
initView();
initData();
initAction();
}
private void initView(){};
private void initData(){};
private void initAction(){};
複製代碼
2019-02-18 23:08:28.362 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onCreate:
2019-02-18 23:08:28.388 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onStart:
2019-02-18 23:08:28.390 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onResume:
複製代碼
2019-02-18 23:08:33.347 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onPause:
2019-02-18 23:08:33.371 4980-4980/com.sjc.myapplication I/生命週期-----ActivityB: onCreate:
2019-02-18 23:08:33.393 4980-4980/com.sjc.myapplication I/生命週期-----ActivityB: onStart:
2019-02-18 23:08:33.395 4980-4980/com.sjc.myapplication I/生命週期-----ActivityB: onResume:
2019-02-18 23:08:33.819 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onStop:
複製代碼
2019-02-18 23:10:59.457 4980-4980/com.sjc.myapplication I/生命週期-----ActivityB: onPause:
2019-02-18 23:10:59.482 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onRestart:
2019-02-18 23:10:59.482 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onStart:
2019-02-18 23:10:59.483 4980-4980/com.sjc.myapplication I/生命週期-----ActivityA: onResume:
2019-02-18 23:10:59.813 4980-4980/com.sjc.myapplication I/生命週期-----ActivityB: onStop:
2019-02-18 23:10:59.814 4980-4980/com.sjc.myapplication I/生命週期-----ActivityB: onDestroy:
複製代碼
Activity 異常銷燬的時候,會調用 ==onSaveInstanceState== 方法保存數據,該方法是在 onStop 以前執行,咱們可使用 Bundle 來儲存數據,當 Activity 重建的時候會調用 ==onRestoreInstanceState== 方法,咱們能夠經過 onRestoreInstanceState(Bundle savedInstanceState)傳遞過來的Bundle來獲取以前儲存的數據。進行數據恢復。固然也能夠在onCreate(Bundle savedInstanceState)方法裏面取出來。動畫
另:onSaveInstanceState 和 onRestoreInstanceState 方法中,系統自動爲咱們作了一些操做: 例如:Edittext 自動還原填寫內容, ListView 還原滾動位置,由於每個View都有本身的 onSaveInstanceState 和 onRestoreInstanceState 方法。spa
activity異常銷燬的場景:操作系統
經過在 mainfest 裏面的 android:launchMode= ""屬性來設置
複製代碼
關於 taskAffinity 屬性(能夠指定Activity所在的任務棧),在 launchMode 爲 standard 和 singleTop 的時候是沒有做用的。具體做用體如今 singleTask 屬性上。 具體詳情連接 完全弄懂Activity四大啓動模式.net