-
Activity 生命周期
-
Activity 的四種狀態
running / paused / stopped / killed
-
Activity 生命周期
activity_lifecycle.pngActivity 啟動 -> onCreate() -> onStart() -> onResume();
點擊 Home 鍵回到主界面(Activity 不可見:被一個 dialog 遮蓋或者一個透明的 activity 覆蓋時)-> OnPause() -> onStop();
當再次回到原 Activity 時 -> onRestart() -> onStart() -> onResume();
退出當前 Activity 時 -> onPause() -> onStop() -> onDestroy()
onStart()時,Activity 已可見,只是不能交互。當 onResume 時,可交互。
-
Android 進程優先級
-
前臺進程
- 和當前 activity 正在交互的進程
- 和當前 activity 綁定的 Service
-
可見進程
可見但不能點擊的 activity 里的進程
-
服務進程
在后臺開啟的一個 Service 服務
后臺進程
空進程
-
-
-
Android 任務棧
diagram_backstack_singletask_multiactivity.png
-
Activity 啟動模式
-
"standard"
(默認模式)
默認。系統在啟動 Activity 的任務中創建 Activity 的新實例并向其傳送 Intent。Activity 可以多次實例化,而每個實例均可屬于不同的任務,并且一個任務可以擁有多個實例。 -
"singleTop"
(棧頂復用模式)
如果當前任務的頂部已存在 Activity 的一個實例,則系統會通過調用該實例的 onNewIntent() 方法向其傳送 Intent,而不是創建 Activity 的新實例。Activity 可以多次實例化,而每個實例均可屬于不同的任務,并且一個任務可以擁有多個實例(但前提是位于返回棧頂部的 Activity 并不是 Activity 的現有實例)。
例如,假設任務的返回棧包含根 Activity A 以及 Activity B、C 和位于頂部的 D(堆棧是 A-B-C-D;D 位于頂部)。收到針對 D 類 Activity 的 Intent。如果 D 具有默認的 "standard" 啟動模式,則會啟動該類的新實例,且堆棧會變成 A-B-C-D-D。但是,如果 D 的啟動模式是 "singleTop",則 D 的現有實例會通過 onNewIntent() 接收 Intent,因為它位于堆棧的頂部;而堆棧仍為 A-B-C-D。但是,如果收到針對 B 類 Activity 的 Intent,則會向堆棧添加 B 的新實例,即便其啟動模式為 "singleTop" 也是如此。
-
"singleTask"
(棧內復用模式:單例模式)
系統創建新任務棧并實例化位于新任務棧底部的 Activity。但是,如果該 Activity 的一個實例已存在于一個單獨的任務棧中,則系統會通過調用現有實例的 onNewIntent() 方法向其傳送 Intent,而不是創建新實例,并彈出之前在其之上的 activitys
。一次只能存在 Activity 的一個實例。注:盡管 Activity 在新任務中啟動,但是用戶按“返回”按鈕仍會返回到前一個 Activity。
*"singleInstance"
.
與 "singleTask" 相同,只是系統不會將任何其他 Activity 啟動到包含實例的任務中。該 Activity 始終是其任務唯一僅有的成員;由此 Activity 啟動的任何 Activity 均在單獨的任務中打開。
-
-
Scheme 跳轉協議
scheme是android中的一種頁面內跳轉協議,tiao'z通過定義自己的 scheme 協議,可以非常方便的跳轉APP 中的其他頁面:- 服務器可以定制化告訴 APP 跳轉到哪個頁面;
- 可以通過通知欄定制化跳轉頁面
- 可以通過 H5頁面跳轉到Native 頁面等