一、Activity詳解

一、Activity的生命週期

1. activity的四種狀態

  • running activity可以活動 用戶可以點擊 處於棧頂的位置
  • pause 失去焦點 被acitvity窗口覆蓋 ,或者是透明activity處於棧頂位置 失去和用戶的交互 內存緊張會被回收
  • stoped 被完全覆蓋 內存緊張會被回收
  • killed 被系統回收掉

2. activity的生命週期

  • 啓動 oncreate -->onStart-->onResume 
    • onStart--用戶可見 但是用戶不能進行交互
    • onResume--用戶可見 可以進行交互
  • onpause --->onStop 點擊home返回主界面 
    • onpause--處於停止狀態,用戶不可見,內存緊張會被回收
    • onStop ----完全覆蓋,內存緊張會被回收
  • 再次回到原activity onreStart->onStart->onResume
  • 退出onPause->onStop->onDestroy

3.android中進程優先級

  • 前臺
  • 可見
  • 服務 (service)
  • 後臺 (不可見的狀態)

4.activity狀態保存

爲什麼平時並沒有實現onSaveInstanceState()和onRestoreInstanceState()方法,但是有些時候,Activity中的UI狀態依然得到了保存,是爲什麼?

 在Android中,Activity類的onSaveInstanceState()方法默認實現會調用佈局中每個View的onSaveInstanceState()方法去保存其本身的狀態信息,Android框架中幾乎每個控件都會實現這個方法。我們只需要爲想要保存其狀態的每個控件提供一個唯一的ID(在xml中設置 android:id屬性),如果控件沒有 ID,則系統無法保存其狀態。
 
我們可以通過將View的android:saveEnabled屬性設置爲false或通過調用View的setSaveEnabled()方法顯式阻止佈局內的視圖保存其狀態,通常不需要設置這些屬性,但如果想以不同方式恢復Activity UI的狀態,可以這樣做。

二、android中的任務棧 和activity的啓動模式

1.standard

  • 標準的跳轉方式,可以複用activity,爲了避免重新創建消耗內存資源

2.singletop

  • 棧頂複用模式,如果創建的activity在棧頂,就不會重新創建,複用棧頂

3.singletask

  • 棧內複用模式,單例模式,當前棧中有此activity,就會放在棧頂,並且將它之上的activity進行移除,此時會回調onNewIntent方法

3.singleinstance 
- 棧中有且僅有一個實例


三、scheme跳轉協議

Android中的Scheme是一種頁面內跳轉協議,通過自定義Scheme協議,可以跳轉到app中的任何頁面。

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

  • 服務器可以定製化跳轉app頁面
  • app可以通過Scheme跳轉到另一個app頁面
  • 可以通過h5頁面跳轉app原生頁面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章