Android學習筆記1:Activity

這周果然不出所料的沒有繼續安卓CRM開發,而是去幫客戶做DEMO了。不過說好這周開始研習官方API Guides的,也不能食言了,文章我以自己的觀點和想法寫出,也許不嚴謹,但注重易於理解,所以各位大牛們也別太吹毛求疵了,再次謝過 Orz

按照官方的樹形菜單,我從上到下的學習,今天看的是Activity模塊。

 

什麼是Activity

Activity是一個用於與用戶交互的界面,既然爲界面自然就是看的見的,我們可以理解爲他是一個畫板,在其上可以繪製各種UI組件,這個畫板可能佔據手機整個屏幕,也可能只佔據了某一小塊。而一個程序,就是由多個Activity鏈式組成的。

 

如何創建Activity

一個Activity由兩部分組成,繼承了Activity的類和一個XML佈局文件。

以下是一個繼承了Activity的Activity子類

public class TestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

onCreate方法是必須實現的一個方法,在此方法總需要調用setContentView方法設置佈局文件,其中R.layout.main就是佈局文件的唯一標識(R文件是Android工程自動生成的文件,在此可以不用理會),以下是佈局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>


如何把Activity註冊進入程序中

Android程序有一個主要的配置文件AndroidManifest.xml,當新建一個Activity後,需要在該文件中進行配置,見下圖

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.rex"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".TestActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

其中的一個activity標籤就代表了一個Activity。

 

如何啓動一個Activity

啓動Activity,我們調用startActivity()方法,在其中傳入一個Intent(Intent可以理解爲意圖,在此可以先理解成我們想啓動哪個Activity)

Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);

當然我們也可以給新啓動的Activity傳入參數,同樣參數的攜帶者還是intent(可以理解爲帶着禮物去拜訪某人)

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);


如何關閉一個Activity

關閉Activity很簡單,只需要調用finish()即可結束當前的Activity,什麼叫“當前”,就是你現在在手機上看到的畫板(還記得剛纔把Activity比喻成畫板嗎?)。當然如果你信得過Android系統,你大部分時間是沒必要主動調用finish方法的,因爲系統會按照Activity生命週期(生命週期會在下面介紹)和內存消耗情況自行處理。

 

Activity生命週期(重點)

月有陰晴圓缺,海有潮漲潮落,任何事物都講究一個有始有終,Activity自然也不能免俗。Activity的生命週期可分爲:

Create:創造,第一次調用Activity,就好比出生

Start:開始,調用Create後會立即進入該週期,同時被Stop的Activity再次展現再最前面也會進入該階段

Resume:被Pause的Activity再次展現在最前面的時候進入該階段

Pause:當另一個Activity進入程序,部分遮擋了你當前的Activity。

Stop:當另一個Activity進入程序,完全遮擋了你當前的Activity。

Destroy:銷燬,就等於死亡,如果再次調用該Activity會進入Create階段

六個階段

由於有以上6個生命週期,所以Activity類完全可以接管該6個階段,對應到代碼中即爲

public class TestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // The activity is being created.
    }
    @Override
    protected void onStart() {
        super.onStart();
        // The activity is about to become visible.
    }
    @Override
    protected void onResume() {
        super.onResume();
        // The activity has become visible (it is now "resumed").
    }
    @Override
    protected void onPause() {
        super.onPause();
        // Another activity is taking focus (this activity is about to be "paused").
    }
    @Override
    protected void onStop() {
        super.onStop();
        // The activity is no longer visible (it is now "stopped")
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // The activity is about to be destroyed.
    }
}

下面附上一副官方的Activity生命週期圖,圖文並茂更有助於理解

 

今天就寫到這裏,一開始以爲Activity是基礎中的基礎應該很簡單,不過讀着讀着發現就因爲其基礎,所以反而內容和多,同時該模塊又是Android四大天王之一,可見其重要性。該模塊可能會寫個兩到三篇,同時寫過的文章可能會反覆修改,多多斟酌,多多感悟嘛。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章