Android作為一定互聯網領域的一大熱門,其活動周期也受到人們的關注。中培偉業《Android APP開發架構應用實戰》培訓專家隋老師指出,掌握活動的生命周期對任何Android開發者來說都非常重要,Android中的活動是可以層疊的,我們每啟動一個洗的活動,就會覆蓋在原活動之上,然后點擊Back鍵會銷毀最上面的活動,下面的一個活動就會重新顯示出來。
隋老師認為,其實Android是使用任務(Task)來管理活動的,一個任務就是一組存放在棧里的活動的集合,這個棧也被稱作返回棧(Back Task),棧是一種后進先出的數據結構,在默認情況下,每當我們啟動了一個新的活動,他會在返回棧中入棧,并處于棧頂位置,而每當我們按下Back鍵或者調用finish()方法去銷毀一個活動時,處于棧頂的活動就會出棧,這時前一個入棧的活動就會重新處于棧頂的位置,系統總是會顯示處于棧頂的活動給用戶通過示例圖看返回棧是如何管理活動入棧出棧操作的:
活動狀態
1. 運行狀態當一個活動位于返回棧的棧頂時,這時活動就處于運行狀態。系統最不愿意回收的就是處于運行狀態的活動,因為這會帶來非常差的用戶體驗。
2. 暫停狀態當一個活動不再處于棧頂位置,但仍然可見時,這時活動就進入了暫停狀態,比如對話框形式的活動只會占用屏幕中間的部分區域,你還可以看到后邊的界面,這是,后面的活動就處于暫停狀態
3. 停止狀態當一個活動不在處于棧頂位置,并且完全處于不可見的時候,就進入了停止狀態,就是進入了一個完全不透明的活動,上個活動會處于停止狀態,這時系統仍然會為這種活動保存相應的狀態和成員變量,但是這并不是完全可靠的,當其他地方需要內存時,處于停止狀態的活動有可能會被系統回收
4. 銷毀狀態當一個活動從返回棧中移除后就變成了銷毀狀態,系統傾向于回收處于這種狀態的活動,從而保證手機內存充足活動的生存期Activity類中定義了七個回掉方法,覆蓋了活動生命周期的每一個環節:
a. onCreate()每個活動中都重寫這個方法,他會在活動第一次被創建的時候調用,你應該在這個方法中完成活動的初始化操作,比如加載布局、綁定事件。
b. onStart()這個方法在活動由不可見變為可見的時候調用
c. onResume()活動準備好和用戶進行交互時調用,此時的活動一定位于返回棧的棧頂,并且處于運行狀態
d. onPause()在系統準備去啟動或者恢復另一個活動的時候調用
e. onStop()這個方法在活動完全不可見的時候調用
f. onDestroy()這個方法在活動被銷毀之前調用,之后活動的狀態將變為銷毀狀態
g. onRestart()這個方法咋活動由停止狀態變為運行狀態之前調用,也就是活動被重新啟動了
以上七種方法除了onRestart()方法,其他都是兩兩相對的,從而又可以將活動分為三種生存期:
(一)完整生存期活動 在onCreate()方法和onDestroy()方法之間所經歷的,就是完整生存期
(二)可見生存期活動 在onStart()方法和onStop()之間所經歷的,在可見生命期內,活動對于用戶總是可見的,即便有可能無法和用戶進行交互。
(三)前臺生存期活動 在onResume()方法和onPause()方法之間所經歷的,這個生存期內,活動總是處于運行狀態,此時的活動是可以和用戶進行相互的,我們平時看到和接觸最多的也是這個狀態下的活動。