Android活動的生命週期

Android活動的生命週期
掌握活動的生命週期對任何Android開發者來講都很是重要,Android中的活動是能夠層疊的,咱們每啓動一個洗的活動,就會覆蓋在原活動之上,而後點擊Back鍵會銷燬最上面的活動,下面的一個活動就會從新顯示出來。
其實Android是使用任務(Task)來管理活動的,一個任務就是一組存放在棧裏的活動的集合,這個棧也被稱做 返回棧(Back Task),棧是一種後進先出的數據結構,在默認狀況下,每當咱們啓動了一個新的活動,他會在返回棧中入棧,並處於棧頂位置,而每當咱們按下Back鍵或者調用finish()方法去銷燬一個活動時,處於棧頂的活動就會出棧,這時前一個入棧的活動就會從新處於棧頂的位置,系統老是會顯示處於棧頂的活動給用戶
經過示例圖看返回棧是如何管理活動入棧出棧操做的:
 
 
 
 
 
 
 
活動狀態
一、運行狀態
當一個活動位於返回棧的棧頂時,這時活動就處於運行狀態。系統最不肯意回收的就是處於運行狀態的活動,由於這會帶來很是差的用戶體驗。
二、暫停狀態
當一個活動再也不處於棧頂位置,但仍然可見時,這時活動就進入了暫停狀態,好比對話框形式的活動只會佔用屏幕中間的部分區域,你還能夠看到後邊的界面,這是,後面的活動就處於暫停狀態
三、中止狀態
當一個活動不在處於棧頂位置,而且徹底處於不可見的時候,就進入了中止狀態,就是進入了一個徹底不透明的活動,上個活動會處於中止狀態,這時系統仍然會爲這種活動保存相應的狀態和成員變量,可是這並非徹底可靠的,當其餘地方須要內存時,處於中止狀態的活動有可能會被系統回收
四、銷燬狀態
當一個活動從返回棧中移除後就變成了銷燬狀態,系統傾向於回收處於這種狀態的活動,從而保證手機內存充足
活動的生存期
Activity類中定義了七個回掉方法,覆蓋了活動生命週期的每個環節:
一、 onCreate()
每一個活動中都重寫這個方法,他會在活動第一次被建立的時候調用,你應該在這個方法中完成活動的初始化操做,好比加載佈局、綁定事件。
二、 onStart()
這個方法在活動由不可見變爲可見的時候調用
三、 onResume()
活動準備好和用戶進行交互時調用,此時的活動必定位於返回棧的棧頂,而且處於運行狀態
四、 onPause()
在系統準備去啓動或者恢復另外一個活動的時候調用
五、 onStop()
這個方法在活動徹底不可見的時候調用
六、 onDestroy()
這個方法在活動被銷燬以前調用,以後活動的狀態將變爲銷燬狀態
七、 onRestart()
這個方法咋活動由中止狀態變爲運行狀態以前調用,也就是活動被從新啓動了。
 
以上七個方法除了onRestart()方法,其餘都是兩兩相對的,從而又能夠將活動分爲三種生存期
1、 完整生存期
活動在onCreate()方法和onDestroy()方法之間所經歷的,就是完整生存期
2、 可見生存期
活動在onStart()方法和onStop()之間所經歷的,在可見生命期內,活動對於用戶老是可見的,即使有可能沒法和用戶進行交互。
3、 前臺生存期
活動在onResume()方法和onPause()方法之間所經歷的,這個生存期內,活動老是處於運行狀態,此時的活動是能夠和用戶進行相互的,咱們平時看到和接觸最多的也是這個狀態下的活動。
活動生命週期示意圖:
 
Activity的啓動模式
standard  標準模式
每次啓動都會打開新的實例
singleTop  棧頂惟一
若是要啓動的activity處於棧頂,則再也不新建實例
singleTask  棧內惟一
若是要啓動的activty在Task已經存在,則再也不新建實例
singleInstance  事例惟一
若是要啓動的activity已經存在,則再也不新建實例
 
 
Intent與IntentFilter
Intent——意圖
用於android個組件的啓動和組件間傳遞數據
屬性:
component  目標組件描述
action  對Intent執行動做的描述
data  對這次Intent操做相關數據的描述
type  對Intent所關聯的數據類型的描述
category  對Intent執行動做的附加信息描述
extra  對其餘一切附加信息的描述,他是對其餘全部附加信息的集合
 
Intent-Filter——意圖過濾器
對Intent的描述進行過濾操做,對Intent的各個屬性進行匹配,從而選擇出相應的組件來執行Intent想要進行的操做
 
定義
<Intent-Filter>
  <action name=「xxxxxxxxx」/>
  <action name=「yyyyyyyy」/>
  <category name=「ttttttttttt」/>
  <category name=「uuuuuuu」/>
  <data>
  <data>
</Intent-Filter>
在IntentFilter中action、category、data均可以存在多個
匹配原則
action:Intent中的action只要和IntentFilter中的任意一個action同樣便可
category:Intent中添加的category必須所有在IntentFileter定義的ategory中
data:Intent中的data要和IntentFilter中的data的描述匹配
type:Intent中的type要和IntentFilter中data要求的mimeType一直
相關文章
相關標籤/搜索