Activity生命週期

1.什麼是Activity?

           首先,Activity是Android系統中的四大組件之一,可以用於顯示View。Activity是一個與用記交互的系統模塊,幾乎所有的Activity都是和用戶進行交互的,但是如果這樣就能說Activity主要是用來顯示View就不太正確了。

          下面我就先來介紹一下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層進行處理,最後再來顯示出處理結果。

2.Acitivity的生命週期

       

      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中寫出來,如果單獨寫一個工具類獲得不了。

發佈了18 篇原創文章 · 獲贊 13 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章