一門技術的基礎知識是掌握一門技術的起點和支撐。許多基礎知識需要我們不斷的回顧。
Activity是Android的四大組件之一,也是我們最長用到的組件。熟練的使用的Activity是我們Android的最基本功。使用Activity時最常涉及到的知識有
Activity生命周期 (7個狀態(tài)方法、幾種狀態(tài)、數(shù)據(jù)緩存)
Activity啟動模式
Activity使用技巧
(一)Activity的生命周期
1、一個完整的周期路線 : onCreate() -> onStart()-> onResume() -> onPause() -> onStop() -> onDestroy() ? ,這是一個完整無特殊情況的生命周期方法調用,沒有涉及到onRestart()方法。
具體方法邏輯可以看下面的生命周期圖(自己總結)
要理解這些方法的調用次序和影響就要理解Activity的幾種狀態(tài):不可見、可見不可操作、可見可操作
當我們啟動一個Activity,直到Activity顯示出來,后臺日志打印如下
當Activity跳轉到另一個Activity時
可以看到當在一個Activity中啟動另一個Activity時,先是執(zhí)行A的onPause() 然后時B的onCreate() ->onStart() ->onResume 最后?執(zhí)行A的onStop()。
這個次序非常清晰的對應到生命周期的狀態(tài)和方法的對應關系。
現(xiàn)在看一下一個完整的兩個Activity交互的方法調用流程A B(A啟動B,B退回到A)
可以看到在A和B的交互中,A或者B的生命周期方法并不是連貫執(zhí)行的,這個可以和Activity結合起來。
A啟動B的一個完整流程:A onPause() (執(zhí)行后A可見但不可操作)->B onCreate() ->B onStart() -> B onResume() (B可見可操作) ->A onStop(A不可見)
B退回到A的一個完整流程:B onPause() (執(zhí)行后B可見但不可操作)->A onRestart() ->A onStart() -> A onResume() (A可見可操作) ->B onStop(B不可見) -> B onDestroy()
介紹:A 啟動到B的時候,先是A失去焦點(可見不可操作)然后開始B的啟動流程,當B達到可見可操作的時候再執(zhí)行A的onStop將A變?yōu)椴灰娨膊豢刹僮?。但不會?zhí)行A的onDestroy
Activity的棧,Android專門有存放Activity的棧,目前我們看到的Activity在棧頂,當新啟動一個Activity就會繼續(xù)進入到棧頂,而回退,則是將棧頂?shù)腁ctivity退出,回到下一個Activity。
Activity依然在棧內時,不會執(zhí)行onDestroy