一、Activity詳解

一、Activity的生命周期

1. activity的四種狀態(tài)

running activity可以活動 用戶可以點擊 處于棧頂?shù)奈恢?/p>

pause 失去焦點 被acitvity窗口覆蓋 ,或者是透明activity處于棧頂位置 失去和用戶的交互 內(nèi)存緊張會被回收

stoped 被完全覆蓋 內(nèi)存緊張會被回收

killed 被系統(tǒng)回收掉

2. activity的生命周期

啟動 oncreate -->onStart-->onResume?

onStart--用戶可見 但是用戶不能進行交互

onResume--用戶可見 可以進行交互

onpause --->onStop 點擊home返回主界面?

onpause--處于停止狀態(tài),用戶不可見,內(nèi)存緊張會被回收

onStop ----完全覆蓋,內(nèi)存緊張會被回收

再次回到原activity onreStart->onStart->onResume

退出onPause->onStop->onDestroy

3.android中進程優(yōu)先級

前臺

可見

服務(wù) (service)

后臺 (不可見的狀態(tài))

4.activity狀態(tài)保存

為什么平時并沒有實現(xiàn)onSaveInstanceState()和onRestoreInstanceState()方法,但是有些時候,Activity中的UI狀態(tài)依然得到了保存,是為什么?

?在Android中,Activity類的onSaveInstanceState()方法默認實現(xiàn)會調(diào)用布局中每個View的onSaveInstanceState()方法去保存其本身的狀態(tài)信息,Android框架中幾乎每個控件都會實現(xiàn)這個方法。我們只需要為想要保存其狀態(tài)的每個控件提供一個唯一的ID(在xml中設(shè)置 android:id屬性),如果控件沒有 ID,則系統(tǒng)無法保存其狀態(tài)。


我們可以通過將View的android:saveEnabled屬性設(shè)置為false或通過調(diào)用View的setSaveEnabled()方法顯式阻止布局內(nèi)的視圖保存其狀態(tài),通常不需要設(shè)置這些屬性,但如果想以不同方式恢復Activity UI的狀態(tài),可以這樣做。

二、android中的任務(wù)棧 和activity的啟動模式

1.standard

標準的跳轉(zhuǎn)方式,可以復用activity,為了避免重新創(chuàng)建消耗內(nèi)存資源

2.singletop

棧頂復用模式,如果創(chuàng)建的activity在棧頂,就不會重新創(chuàng)建,復用棧頂

3.singletask

棧內(nèi)復用模式,單例模式,當前棧中有此activity,就會放在棧頂,并且將它之上的activity進行移除,此時會回調(diào)onNewIntent方法

3.singleinstance?

- 棧中有且僅有一個實例

三、scheme跳轉(zhuǎn)協(xié)議

Android中的Scheme是一種頁面內(nèi)跳轉(zhuǎn)協(xié)議,通過自定義Scheme協(xié)議,可以跳轉(zhuǎn)到app中的任何頁面。

--?Uri.parse("qh://test:8080/goods?goodsId=8897&name=fuck")

服務(wù)器可以定制化跳轉(zhuǎn)app頁面

app可以通過Scheme跳轉(zhuǎn)到另一個app頁面

可以通過h5頁面跳轉(zhuǎn)app原生頁面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容