1. 程式人生 > >安卓學習(初)第二章(3)(《第一行程式碼》)

安卓學習(初)第二章(3)(《第一行程式碼》)

一、活動生存期

1、Activity類中一共七個回撥方法

onCreate(),活動第一次建立的時候用的方法。在這個方法中要完成活動的初始化,如載入佈局、繫結事件。——活動由無到有

onStart(),這個方法在活動由不可見變為可見的時候呼叫。——活動開始執行

onResume(),這個方法在活動準備好和使用者進行互動的時候呼叫。因此,呼叫該方法時活動一定位於棧頂。——活動由靜到動

onPause(),系統準備去啟動或恢復另一個活動時呼叫,對話方塊形式活動會得到執行。——活動由動到靜

onStop(),在活動完全不可見的時候呼叫,對話方塊形式活動不會得到執行。——活動最後停止

onDestroy(),在活動銷燬之前呼叫,之後活動為銷燬狀態。——活動由有到無

onRestart(),活動在停止狀態到執行狀態前呼叫,也就是活動被重新啟動。——活動由停止狀態到執行狀態

2、生存期階段

onCreate()方法和onDestroy()方法之間所經歷的就是一個完整的生存週期。

onStart()方法和onStop()方法之間經歷的是可見生存週期。最前者對資源載入,最後者對資源進行釋放

onResume()方法和onPause()方法之間所經歷的是前臺生存期。活動總是處於執行狀態,期間可能和使用者進行互動

3、一個活動的完整週期執行都會依當前活動所在狀態執行以上的所有相應的方法,如果沒有方法重寫則不做任何動作

*4、在佈局檔案中,程式碼如下:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="*******"
    />

<TextView>標籤在這是為佈局顯示文字“**********”

*5AndroidManifest.xml中的註冊程式碼如下:

<activity android:name=".secondActivity"
    android:theme="@android:style/Theme.Dialog">

可為活動指定主題(安卓內建主題有很多可以選,當然也可以自制)。而這裡的@android:style/Theme.Dialog是表示使用對話方塊式的主題。

二、活動被回收

1、當在a活動執行中開啟b活動,a活動就會停止,若系統記憶體不夠,a活動就會被回收。當在b活動按back鍵時,一樣會返回a活動,但不是開始執行onRestart方法了而是執行oncreate方法。相當於a活動被關閉要重新建立再啟動,這時候使用者之前在a活動的實時資料就會消失。

2、 onSaveInstanceState()方法保證在活動被回收的時候會被執行,再配合putInt()方法儲存整型資料putString()方法儲存字串資料,以此類推。onSaveInstanceState()方法攜帶一個Bundle型別引數。putInt()之類的方法都有兩個引數,第一個引數從Bundle取值(其實就是一個數據的代號,供以後引用該資料時當地址使用),第二個引數是真正要儲存的內容。

示例:

protected void onsavedInstanceState(Bundle outState) {
    super.onsavedInstanceState(outState);
    String tempData="something you just typed";
    outState.putString("data_key",tempData);
}

以上用 onSaveInstanceState()方法,當活動要被回收時執行該方法儲存資料。然後就是恢復資料:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG,"onCreate");
    setContentView(R.layout.first_layout);
    if (savedInstanceState!=null){       //null就是空               if這一段就是判斷恢復資料的
       String tempData=savedInstanceState.getString("data_key");   由於onsavedInstanceState方法在活動回收時已經
       Log.d(TAG.tempData);                                         把savedInstanceState附帶之前儲存的資料,因此
        }                                                           if後面的恢復資料能進行(即額外執行多一次列印)
    ... ...
}