須要在清單文件中爲其配置一個activity標籤html
標籤中若是帶有這個子節點,則會在系統中多建立一個快捷圖標android
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
一個應用程序能夠在桌面建立多個快捷圖標。web
activity的名稱、圖標能夠和應用程序的名稱、圖標不相同瀏覽器
android:icon="@drawable/ic_launcher" android:label="@string/app_name"
Activity的跳轉須要建立Intent對象,經過設置intent對象的參數指定要跳轉Activityapp
經過設置Activity的包名和類名實現跳轉,稱爲顯式意圖ide
經過指定動做實現跳轉,稱爲隱式意圖post
跳轉至同一項目下的另外一個Activity,直接指定該Activity的字節碼便可學習
Intent intent = new Intent(); intent.setClass(this, SecondActivity.class); startActivity(intent);
跳轉至其餘應用中的Activity,須要指定該應用的包名和該Activity的類名網站
Intent intent = new Intent(); //啓動系統自帶的撥號器應用 intent.setClassName("com.android.dialer", "com.android.dialer.DialtactsActivity"); startActivity(intent);
隱式意圖跳轉至指定Activitythis
Intent intent = new Intent(); //啓動系統自帶的撥號器應用 intent.setAction(Intent.ACTION_DIAL); startActivity(intent);
要讓一個Activity能夠被隱式啓動,須要在清單文件的activity節點中設置intent-filter子節點
<intent-filter > <action android:name="com.sinyee.babybus.action.second"/> <data android:scheme="asd" android:mimeType="aa/bb"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>
action 指定動做(能夠自定義,能夠使用系統自帶的)
data 指定數據(操做什麼內容)
category 類別 (默認類別,機頂盒,車載電腦)
隱式意圖啓動Activity,須要爲intent設置以上三個屬性,且值必須與該Activity在清單文件中對三個屬性的定義匹配
intent-filter節點及其子節點均可以同時定義多個,隱式啓動時只需與任意一個匹配便可
//獲取啓動此Activity的intent對象 Intent intent = getIntent(); Uri uri = intent.getData();
顯式意圖用於啓動同一應用中的Activity
隱式意圖用於啓動不一樣應用中的Activity
Activity經過Intent啓動時,能夠經過Intent對象攜帶數據到目標Activity
Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("maleName", "kiki"); intent.putExtra("femaleName", "miaomiao"); startActivity(intent);
在目標Activity中取出數據
Intent intent = getIntent(); String maleName = intent.getStringExtra("maleName"); String femaleName = intent.getStringExtra("femaleName");
onCreate-->onStart-->onResume-->onPause-->onStop-->onDestory
onStart-->onResume-->onPause-->onStop
onResume-->onPause
每一個應用會有一個Activity任務棧,存放已啓動的Activity
Activity的啓動模式,修改任務棧的排列狀況
standard 標準啓動模式
singleTop 單一頂部模式
若是任務棧的棧頂存在這個要開啓的activity,不會從新的建立activity,而是複用已經存在的activity。保證棧頂若是存在,不會重複建立。
應用場景:瀏覽器的書籤
singeTask 單一任務棧,在當前任務棧裏面只能有一個實例存在
當開啓activity的時候,就去檢查在任務棧裏面是否有實例已經存在,若是有實例存在就複用這個已經存在的activity,而且把這個activity上面的全部的別的activity都清空,複用這個已經存在的activity。保證整個任務棧裏面只有一個實例存在
應用場景:瀏覽器的activity
若是一個activity的建立須要佔用大量的系統資源(cpu,內存)通常配置這個activity爲singletask的啓動模式。webkit內核 c代碼
singleInstance啓動模式很是特殊, activity會運行在本身的任務棧裏面,而且這個任務棧裏面只有一個實例存在
若是你要保證一個activity在整個手機操做系統裏面只有一個實例存在,使用singleInstance
應用場景: 電話撥打界面
默認狀況下 ,橫豎屏切換, 銷燬當前的activity,從新建立一個新的activity
快捷鍵ctrl+F11(對android模擬器進行橫豎屏切換)
在一些特殊的應用程序常見下,好比遊戲,不但願橫豎屏切換activity被銷燬從新建立
需求:禁用掉橫豎屏切換的生命週期
橫豎屏寫死
android:screenOrientation="landscape" android:screenOrientation="portrait"
讓系統的環境 再也不去敏感橫豎屏的切換。
android:configChanges="orientation|screenSize|keyboardHidden"
步驟:
開啓activity而且獲取返回值
startActivityForResult(intent, 0);
在新開啓的界面裏面實現設置數據的邏輯
Intent data = new Intent(); data.putExtra("phone", phone); //設置一個結果數據,數據會返回給調用者 setResult(0, data); finish();//關閉掉當前的activity,纔會返回數據
在開啓者activity裏面實現方法
onActivityResult(int requestCode, int resultCode, Intent data) 經過data獲取返回的數據
根據請求碼和結果碼肯定業務邏輯
本站文章爲 寶寶巴士 SD.Team 原創,轉載務必在明顯處註明:(做者官方網站: 寶寶巴士 )
轉載自【寶寶巴士SuperDo團隊】 原文連接: http://www.cnblogs.com/superdo/p/4892768.html