activity聲明周期
oncreate->onStart->(onReStart)->onResume->onPause->onStop->onDestory()```
> onstart 開始activity已經在前臺,但是還是不可見,onResume表示已經開始可見狀態(tài)(對應著可見進程)
onPause() 對應著后臺進程
#activity 加載模式
- standard 默認的加載模式:
> 每當startActivity 直接往棧頂添加新的activity 聲明周期顯示之前的AonPause然后是新的`activity` onCreate->onStart->onResume->舊的`activity`onStop
- singleTop
> 棧頂單一加載模式 當activity A設置成該模式后, A位于棧頂后,如果在啟動新的A,A的生命周期onPause->onNewIntent->onResume
如果A不在棧頂,那么就和standard模式一樣
- singleTask
> 如果位于棧頂 則onPause->onIntent->onResume 如果位于棧底,則吧上面所有的activity都pop出戰(zhàn),自己則是調用onNewIntent -onRestart->onStart->onResume(自己被喚起)
- singleInstance 會打開一個新的task并把該activity放進去
# activity異常關閉恢復
`activity`會把當前頁面中所有擁有`id`的`view`的狀態(tài)保存起來,但是activity中開發(fā)者聲明的變量并不會保存,用戶可以在`onSaveInstance`方法中保存必要的參數(shù),`activity`重建后會在`onCreate(Bundle savedInstanceState)`的`savedInstanceState`中存放,但是這個并不推薦,因為第一次啟動activity的savedInstanceState是null,官方推薦在`onRestoreInstanceState(Bundle savedInstanceState) `方法中恢復數(shù)據
#activity隱式啟動(應用內,網頁端)
- 應用內隱式啟動Activity:A
對于A的要求 在manifest文件中 A要聲明`category`和`action` 這個是必須的,然后在intnent啟動時需標明action,**默認的category可以不標明**,`intent`會自動添加,對于action匹配規(guī)則,action 可以聲明多個,但是必須要有一個可以匹配成功,category則一但在manifest文件中聲明,則必須一一對應(這么記,維生素c,所以category要一一對應)
對于intent隱式啟動,安全起見,需要先驗證一下這個intent是否能找到`intent.resolveActivity(getPackageManager());`只有不為`null`那么可以安全啟動
網頁內啟動(Scheme規(guī)則)
在manifest文件中聲明
<data
android:host=""
android:mimeType=""
android:path=""
android:scheme=""
android:pathPattern=""
android:pathPrefix=""
android:port=""
android:ssp=""
android:sspPattern=""
android:sspPrefix=""/>
> 一般只需要設置scheme和host即可 scheme 就是http這種,host就是www.google.com
##總結
個人感覺activity基礎知識就這么多,如果有不足 歡迎指出