Activity的定義
Activity 是一種包含用戶界面的組件,主要用于和用戶進(jìn)行交互。
Activity的生命周期
Activity的四種狀態(tài)
Running/Paused/Stopped/Killed
1. Running:?用戶可以點(diǎn)擊屏幕,且屏幕會做出相應(yīng)的反應(yīng),活動處于activity任務(wù)棧棧頂,是最不可能被回收的activity。
2. Paused:?活動失去焦點(diǎn)(被一個對話框、一個非全屏或透明的activity占據(jù)棧頂),導(dǎo)致當(dāng)前activity處于暫停狀態(tài),活動處于任可見狀態(tài),但已失去交互功能。當(dāng)系統(tǒng)內(nèi)存緊張時,才會回收這個狀態(tài)下的activity。
3. Stopped:?當(dāng)另一個活動完全覆蓋當(dāng)前活動,當(dāng)前活動不再處于棧頂,且不可見,則是處于Stopped,系統(tǒng)內(nèi)存較低時,才會回收這個狀態(tài)的活動。
4.Killed: Activity已被系統(tǒng)回收,activity的成員變量等信息已經(jīng)不存在了.
Activity的生命周期
onCreate()/onStart()/onResume()/onPaused()/onStop()/onDestroy()/onRestart()
(1) ?Activity啟動onCreate()-->onStart()-->onResume()
a. ? ? ?onCreate(): Activity被創(chuàng)建時回掉,是Activity第一個被調(diào)用的方法,在里面完成初始化,數(shù)據(jù)加載、圖片預(yù)加載等內(nèi)容。
b. ? ? onStart():此時Activity正在啟動,處于可見狀態(tài),但還不是前臺顯示,此時用戶還不能進(jìn)行點(diǎn)擊滑動等。
c. ? ? ?onResume():此時活動已處于運(yùn)行狀態(tài),用戶可以在屏幕進(jìn)行點(diǎn)擊、滑動等操作。
(2) ? 點(diǎn)擊Home鍵回到主界面(Activity不可見)-->onPause()-->onStop()
a. ? ? ?onPause():活動處于Paused狀態(tài),即活動仍然可見,但不能觸摸,對應(yīng)onResume()方法。
b. ? ? onStop():活動被停止或被完全覆蓋,不可見,處于Stopped狀態(tài)。當(dāng)系統(tǒng)內(nèi)存緊張時,活動有可能被回收。
(3) ? 再次回到原Activity-->onRestart()-->onStart()-->onResume()
a. ? ? ?onRestart():活動在由不可見變?yōu)榭梢姞顟B(tài)過程中被調(diào)用的方法。
(4) ? 退出當(dāng)前Activity-->onPause()-->onStop()-->onDestroy()
a. ? ? ?onDestroy():當(dāng)前活動正在被銷毀,生命周期的最后一個方法。在這個方法中完成一些回收及資源釋放。
Activity進(jìn)程優(yōu)先級
前臺/可見/服務(wù)/后臺/空
(1) ? 前臺進(jìn)程:處于與用戶交互的活動,或與前臺活動綁定的service。
(2) ? 可見進(jìn)程:一個可見卻不能交互的activity
(3) ? 服務(wù)進(jìn)程:在后臺開啟運(yùn)行的service
(4) ? 后臺進(jìn)程:在后臺運(yùn)行,不可見,不一定會被系統(tǒng)內(nèi)存回收的進(jìn)程。
(5) ? 空進(jìn)程:沒有活躍的組件,只是處于緩存目的而保留的進(jìn)程。
Activity啟動模式
Standard/ SingleTop/SingleTask/SingleInstance
(1) ? Standard(標(biāo)準(zhǔn)) :每次啟動一個activity,都會創(chuàng)建一個新的activity的實(shí)例,并將它加到任務(wù)棧中。不考慮是否已經(jīng)有這個activity的實(shí)例。
(2) ? SingleTop(棧頂復(fù)用):如果創(chuàng)建的activity,此時已經(jīng)處于棧頂,則會再次復(fù)用這個活動。
(3) ? SingleTask(棧內(nèi)復(fù)用):如果新創(chuàng)建的activity,已經(jīng)存在于當(dāng)前任務(wù)棧,則直接將這個activity置于棧頂,并將這個activity以上的全部活動都移出任務(wù)棧。
(4) ? SingleInstance(單實(shí)例):這個活動有且只有一個實(shí)例,擁有自己單獨(dú)的任務(wù)棧。
Scheme跳轉(zhuǎn)協(xié)議
? Android中的scheme是一種頁內(nèi)跳轉(zhuǎn)協(xié)議,是一種非常好的實(shí)現(xiàn)機(jī)制,通過定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個頁面;通過scheme協(xié)議,服務(wù)器可以定制化告訴App跳轉(zhuǎn)到那個頁面,可以通過通知欄消息定制化跳轉(zhuǎn)頁面,可以通過H5頁面跳轉(zhuǎn)頁面等。
? 使用場景:1.服務(wù)端下發(fā)一個url, 客戶端根據(jù)url跳轉(zhuǎn)到相應(yīng)的appactivity. 2.在H5頁面中定義url,再打開App.? 3. App通過url跳到另一個App.