一、Activity生命周期
什么是Activity?Activity是Android與用戶進行交互的接口,它提供了一個界面,讓用戶進行點擊、滑動等操作。
1.Activity的四種狀態(tài)
running狀態(tài):處于活動狀態(tài),此時用戶可以點擊屏幕,屏幕會做出響應(yīng);處于Activity棧頂?shù)臓顟B(tài)。
paused狀態(tài):處于Activity失去焦點的狀態(tài),或者被非全屏的Activity占據(jù),或者被非透明狀態(tài)處于棧頂。失去焦點的Activity所有的成員變量都還在,沒有被銷毀,只是暫時不能與用戶進行交互。內(nèi)存緊張時,該Activity會被銷毀。
stopped狀態(tài):當(dāng)一個Activity被另一個Activity完全覆蓋時,被覆蓋那個Activity就處于stopped狀態(tài),它將不再是可見的,內(nèi)存不緊張時,其成員變量就還在。
killed狀態(tài):Activity被系統(tǒng)回收,所保存的信息和成員變量全都被銷毀。
2.Activity生命周期
1.Activity啟動:onCreate()——>onStart()——>onResume()
onCreate():完成界面的初始化,數(shù)據(jù)加載等。
onStart():處于用戶可見的狀態(tài),但不能進行交互。
onResume():用戶可見,并能進行交互,可進行點擊滑動等操作。
2.點擊Home鍵回到主界面(Activity不可見) :onPause()——>onStop()
onPause():Activity處于可見的,但是不能被觸摸的狀態(tài),對應(yīng)的是onResume()方法。
onStop():表明Activity處于完全不可見的狀態(tài),當(dāng)內(nèi)存緊張時,該Activity可能被回收。
3.當(dāng)再次回到原Activity時 :onRestart()——>onStart()——>onResume()
onRestart():由不可見狀態(tài)變到可見狀態(tài)的時候,會調(diào)用該方法。
onStart():處于用戶可見的狀態(tài),但不能進行交互。
onResume():用戶可見,并能進行交互,可進行點擊滑動等操作。
4.退出當(dāng)前Activity時 :onPause()——>onStop()——>onDestroy()
onPause():Activity處于可見的,但是不能被觸摸的狀態(tài),對應(yīng)的是onResume()方法。
onStop():表明Activity處于完全不可見的狀態(tài),當(dāng)內(nèi)存緊張時,該Activity可能被回收。
onDestroy():表明Activity正在被銷毀,由于回收和釋放資源。
3.Android進程優(yōu)先級
1.前臺進程 :處于前臺正在與用戶進行交互的Activity,或者在前臺綁定的Service。
2.可見進程 :可見但不可交互的Activity。
3.服務(wù)進程 :在后臺開啟的Service就是服務(wù)進程。
4.后臺進程 :當(dāng)處于前臺的Activity,被按下Home鍵之后,該Activity會變成后臺進程,但后臺進程不會被立馬銷毀,系統(tǒng)會根據(jù)內(nèi)存情況進行相應(yīng)的回收。
5.空進程 :表示沒有活躍的組件,只是出于緩存的目的而保留,可被隨時收回。
二、Android任務(wù)棧
任務(wù)棧是后進先出的棧結(jié)構(gòu),Android通過任務(wù)??梢杂行蚬芾砻恳粋€Activity。任務(wù)棧并不是唯一的,一個App中可以有多個任務(wù)棧,但是,在某些情況下,一個Activity也可以獨享一個任務(wù)棧。
三、Activity啟動模式
1.Standard模式 :每次啟動Activity都會創(chuàng)建一個Activity實例,加入任務(wù)棧中,不會考慮任務(wù)棧中是否有相同的Activity。較為消耗資源。
2.SingleTop模式 :棧頂復(fù)用模式,如果新創(chuàng)建的Activity與當(dāng)前的Activity一致,處于棧頂?shù)脑?,就不會?chuàng)建新的Activity,而是復(fù)用棧頂?shù)腁ctivity。
3.SingleTask模式 :任務(wù)棧復(fù)用模式,在新建Activity之前會檢測任務(wù)棧中是否有相同的Activity,有的話直接把Activity移到棧頂,這個Activity以上的Activity都會被移除和銷毀;沒有就新建一個。
4.SingleInstance模式 :在整個系統(tǒng)中,有且只有一個實例,而且這個Activity獨享任務(wù)棧。
四、Scheme跳轉(zhuǎn)模式
android中的scheme是一種頁面內(nèi)跳轉(zhuǎn)協(xié)議,是一種非常好的實現(xiàn)機制,通過定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個頁面;通過scheme協(xié)議,服務(wù)器可以定制化告訴app跳轉(zhuǎn)哪個頁面,可以通過通知欄消息定制化跳轉(zhuǎn)頁面,可以通過H5頁面跳轉(zhuǎn)頁面等。