一、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原生頁面