什麼是Activity
關鍵字:應用組件、四大組件、用戶界面,交互。
An Activity is an application component that provides a screen with which users can interact in order to do something
每個Android應用打開,一般都有界面與用戶進行交互,以完成輸入,輸出等一些功能。提供這個功能的就是Android四大組件之一,Activity。
Activity提供一個窗口描繪了用戶界面,窗口的大小可以是:全屏窗口,浮動的窗口,嵌入在其他Activity裡面(使用ActivityGroup)。
一個應用一般包含多個Activity,每個Activity都被設計圍繞著用戶能執行的特定種類的action,也能開啟其他的Activity。
如下圖所示,Chrome應用中的Activity。
Activity與後退棧(back stack)
用戶打開的activity都被安排進了一個棧(後退棧,back stack,符合後進先出原則"First in Last out")。
當當前activity開啟另一個activity,新的activiy壓入棧頂並且獲得焦點。先前的activity依然在棧裡,但是是停止的。系統保留了它用戶界面當前的狀態。
當用戶按返回按鈕時,當前的activity從棧頂彈出(activity被銷毀destroyed),之前的Activity恢復(恢復先前保存的用戶界面狀態)。
棧中的activity永遠不會重新排列。只會從棧中壓入和彈出
壓入:用戶從當前Activity開啟到另一個Activity
彈出:用戶按返回鍵離開當前Activity。
下圖展示了
用戶依次打開Activity1、Activity2、Activity3,然後按返回鍵離開Activity3返回Activity2
後退棧的情況的示意圖。
Activity的幾種狀態
1.Resumed(或running):運行狀態
activity在屏幕前台,並且有用戶焦點。
2.Paused:暫停狀態
另一個activity在前台並且有用戶焦點。但是這個activity仍然可見(visible)。
另一個Activity在這個Activity上面,它部分透明或是沒有覆蓋整個屏幕。
一個暫停狀態的activity完全是alive的(Activity對象保存在內存中,它保留著所有的狀態和成員信息,依然附屬於(attached to)window manager),但是在極其低存儲空間的情況下會被系統殺掉。
3.Stopped:停止狀態
activity完全被其他activity遮蔽(現在在後台)。
一個停止的activity也是alive的(Activity對象保存在內存中,它保留著所有的狀態和成員信息,但是沒有附屬於(attached to)window manager)對用戶不再可見,當內存在別處需要時,它隨時可能被殺掉。
下面這張圖很好的描述了Activity的運行和暫停這兩種狀態。
second Activity是運行狀態,但是它沒有覆蓋整個屏幕,而之前的那個Activity就是暫停狀態。
(4.Killed:死亡狀態)
Activity被系統殺死回收占用的資源,或沒有啟動。
官方文檔是說的Activity三種狀態,沒有最後這種。便於理解,加上了killed狀態。