一,activity
activity在android中相當於php中的一個html頁面,只要處於這個頁面,就代表這個activity處於活動狀態,用戶在這個界面上所做的任何操作都是針對這個activity來說的,activity從oncreate開始後存在,直到調用ondestroy後結束其生命週期,當Activity的處於後臺不可操作活出與前臺但無法進行互動時,此時的Activity處於暫停狀態,但依然在程序中存在,並沒有被釋放掉,當Activity處於前臺和用戶進行交互時,此時Activity處於激活態,即當前的活動頁面,當Activity被另一個頁面完全覆蓋後,就處於停止狀態,此時通常系統會自動調用函數將其殺死,這就是Activity的三種基本狀態,下面來說一下怎麼創建Activity
對於android來說創建一個activity有兩種方式,
第一種是手工添加,需要完成3個步驟,
1.首先是創建一個類,類繼承自android.app.activity,如下圖,需要填寫的爲name也就是類名,和superclass這一項,這一項填寫android.app.activity即可,其他默認即可
2.在res/Layout下創建一個xml文件,文件名稱最好與創建的類名關聯,方便以後修改,這裏取名叫Activity_Thrid
之後需要對其進行修改與之前的新建Activity關聯上
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.helloandroid.ThridActivity" >
3.在入口程序中註冊
在三個步驟完成後,也就代表一個Activity註冊完成了。
第二種是自動添加:
選擇New-other在彈出的對話框中選擇AndroidActivity後,就會有系統自動完成所有內容的添加
二.intent
intent 的中文翻譯爲意圖,也就是打算幹什麼的意思,在Android中的實際運用也就是打算幹什麼,intent分爲隱式意圖和顯式意圖,區分這兩個很容易,打個比方說,怪盜kid去偷美術品的時候都會寄一張預告函,告訴主人,我將於XX點於XX地點偷取XX,這個就是顯式意圖,普通小偷偷東西並不會事先通知你任何事,而都是在私下裏進行的,這個就是隱式意圖,兩者的區別就在於會不會事先設置好應該傳遞給那些組件,下面就來介紹一下顯式意圖和隱式意圖兩種不同方式的傳遞過程
1.顯式意圖,顯式意圖會實現通過設定好傳遞的地點
Intent intent=new Intent(MainActivity.this, SecondActivity.class);//定義意圖
或者 Intent intent=new Intent()
intent.setClass(MainActivity.this, SecondActivity.class);
或者
Intent intent=new Intent()ComponentName com=new ComponentName(MainActivity.this, SecondActivity.class);
intent.setComponent(com);
三種方式來定義顯式意圖,可以很明顯的看出,每種方式都有明顯的指出起始Activity和需要送達的activity,這樣明確指出需要送達地點的意圖就是顯式意圖
2.隱式意圖,就是指不指出需要送達地點的意圖,那麼android是怎麼來傳輸這種意圖了,一般情況都是根據xml中設置的action,data和Category來自發決定要往哪裏發送
也就是需要在AndroidManifest.xml裏面事先設置後activity的action,data以及Category,具體的設置可以參考下面的代碼:
<activity
android:name=".ThridActivity"
android:label="Thrid Activity label" >
<intent-filter>
<!-- 自定義的動作 -->
<action android:name="com.example.helloandroid.ThridActivity" />
<!-- 附加信息 -->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
註冊後,就需要對意圖的action和category進行設置,如下代碼,這樣android就會在運行時自動根據action和category進行匹配,如果匹配結果只有一項則直接開始運行,如有多項會打開一個選擇列供用戶進行篩選,
Intent intent=new Intent();//定義意圖
intent.setAction("com.example.helloandroid.ThridActivity");
intent.addCategory("android.intent.category.DEFAULT");
3.bundle的使用
bundle的作用在android中是用來傳遞數據的,通常的載體爲意圖,也就是說bundle可以承載在意圖中將數值傳到目標組件處使用
Bundle bundle = new Bundle();
bundle.putString("name", "thridbutton");
intent.putExtras(bundle);
如上代碼,向bundle中壓入數據後,將bundle放入意圖中
之後再目標組件處提取bundle中的數據即可
Bundle bundle=this.getIntent().getExtras();//獲取bundle數據
String str=bundle.getString("name");