Activity
首先,Activity是Android系統中的四大組件之壹,可以用於顯示View。Activity是壹個與用記交互的系統模塊,幾乎所有的Activity都是和用戶進行交互的,但是如果這樣就能說Activity主要是用來顯示View就不太正確了。
在深入了解Activity之前,我們先要知道壹下MVC設計模式,在JAVAEE 中MVC設計模式已經很經典了,而且分的也比較清晰了,但是在Android中,好多人對MVC在Android開發中的應用不是很清楚,下面我就先來介紹壹下MVC在Android開發中的應用:
M(Model 模型):Model是應用程序的主體部分,所有的業務邏輯都應該寫在這裏,在Android中Model層與JavaEE中的變化不大,如:對數據庫的操作,對網絡等的操作都放在該層(但不是說它們都放在同壹個包中,可以分開放,但它們統稱為Model層)。
V(View 視圖):是應用程序中負責生成用戶界面的部分,也是在整個MVC架構中用戶唯壹可以看到的壹層,接收用戶輸入,顯示處理結果;在Android應用中壹般采用XML文件裏德界面的描述,使用的時候可以非常方便的引入,當然也可以使用JavaScript+Html等方式作為View。
C(Controller控制層)android的控制層的重任就要落在眾多的activity的肩上了,所以在這裏就要建議大家不要在activity中寫太多的代碼,盡量能過activity交割Model業務邏輯層處理。
好了,在介紹過Android應用開發中的MVC架構後,我們就可以很明確的知道,在Android中Activity主要是用來做控制的,它可以選擇要顯示的View,也可以從View中獲取數據然後把數據傳給Model層進行處理,最後再來顯示出處理結果。
介紹過Activity的主要作用後,那麽我們就要詳細說壹下Activity了。
要想了解Activity,那麽就必須要清楚Activity的生命周期,圖片是最生動的,如下圖:
Activity生命周期圖
Activity 的生命周期是被以下的函數控制的。
public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
onCreate(Bundle) 函數是妳進行初始化的地方,這個也是執行
setContentView(View)函數的地方,setContentView(View)函數可以傳入壹個由XML
編制的UI界面,可以使UI和具體實現完全分離。
onPause()函數是處理用戶離開當前 Activity 的地方。更重要的是,任何在當前
Activity中的任何改變都要在這個函數中提交。
Activity有四種狀態:
活動狀態,當Activity處於Stack(棧)頂時,就是手機當前的現實屏幕,這是 Activity就
處於activity或者運行狀態。
運行但是失去焦點,當Activity還處於運行狀態時,但是屏幕是有另外壹個Activity
處於文檔處於焦點狀態,當前的Activity就處於pause。
停止,當Activity被另壹個Activity完全覆蓋的時候,就被停止了,其實就是雖然在
運行,但是用戶卻看不見。
結束,當Activity處於pause或者stop時,系統可以結束 Activity,回收資源,這
是Activity就是處於結束狀態了。
處於結束狀態的是Activity,如果要使用戶可見,只要重啟才可以。
Activity的響應時間
當前Activity所在的線程為主線程,它的響應時間為5秒,如果在當前運行的Activity中進行耗時的操作且響應時間起過5秒,那麽程序就會報ANR錯誤。所以,這也是不建議在Activity中寫太多復雜代碼的原因之壹。
當然,有些代碼只能寫在Activity中,不然就運行不了(它們不是生命周期方法),比如妳想要獲得android系統或者硬件壹的些信息,就必須在Activity中寫出來,如果單獨寫壹個工具類獲得不了。