一、概念
Activity是一個應(yīng)用程序的組件,他在屏幕上提供了一個區(qū)域,允許用戶在上面做一些交互性的操作, 比如打電話,照相,發(fā)送郵件,或者顯示一個地圖!Activity可以理解成一個繪制用戶界面的窗口, 而這個窗口可以填滿整個屏幕,也可能比屏幕小或者浮動在其他窗口的上方

二、Activity/ActionBarActivity/AppCompatActivity的區(qū)別
ActionBarActivity/AppCompatActivity這兩個都是為了低版本兼容而提出的提出來的,他們都在v7包下, ActionBarActivity已被廢棄,現(xiàn)在用 ToolBar?,F(xiàn)在在Android Studio創(chuàng)建一個Activity默認(rèn)繼承的會是:AppCompatActivity也可以只寫Activity,只是AppCompatActivity給我們提供了一些新的東西
三、Activity的創(chuàng)建流程

四、啟動一個Activity的幾種方式
顯式啟動
startActivity(new Intent(當(dāng)前Act.this,要啟動的Act.class));
ComponentName cn = new ComponentName("當(dāng)前Act的全限定類名","啟動Act的全限定類名") ;
Intent intent = new Intent() ;
intent.setComponent(cn) ;
startActivity(intent) ;
Intent intent = new Intent("android.intent.action.MAIN");
intent.setClassName("當(dāng)前Act的全限定類名","啟動Act的全限定類名");
startActivity(intent);
隱式啟動
<activity
android:name=".SecondActivity"
android:label="第二個Activity">
<intent-filter>
<action android:name="sec_action"></action>
<category android:name="sec_category"></category>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
Intent it = new Intent();
it.setAction("sec_action");
it.addCategory("sec_category");
startActivity(it);
直接通過包名啟動apk
Intent intent = getPackageManager().getLaunchIntentForPackage("apk第一個啟動的Activity的全限定類名") ;
if(intent != null) startActivity(intent) ;
五、系統(tǒng)提供的常見的Activity
//撥打電話
// 給移動客服10010撥打電話
Uri uri = Uri.parse("tel:10010");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);
//發(fā)送短信
// 給10010發(fā)送內(nèi)容為“cxll”的短信
Uri uri = Uri.parse("smsto:10010");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "cxll");
startActivity(intent);
//打開瀏覽器:
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//多媒體播放:
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/foo.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);
//獲取SD卡下所有音頻文件,然后播放第一首=-=
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//打開攝像頭拍照:
//打開拍照程序
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
//取出照片數(shù)據(jù)
Bundle extras = intent.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");
//另一種:
//調(diào)用系統(tǒng)相機應(yīng)用程序,并存儲拍下來的照片
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
time = Calendar.getInstance().getTimeInMillis();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
.getExternalStorageDirectory().getAbsolutePath()+"/tucue", time + ".jpg")));
startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE);
//獲取并剪切圖片
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true"); // 開啟剪切
intent.putExtra("aspectX", 1); // 剪切的寬高比為1:2
intent.putExtra("aspectY", 2);
intent.putExtra("outputX", 20); // 保存圖片的寬和高
intent.putExtra("outputY", 40);
intent.putExtra("output", Uri.fromFile(new File("/mnt/sdcard/temp"))); // 保存路徑
intent.putExtra("outputFormat", "JPEG");// 返回格式
startActivityForResult(intent, 0);
//剪切特定圖片
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
intent.setData(Uri.fromFile(new File("/mnt/sdcard/temp")));
intent.putExtra("outputX", 1); // 剪切的寬高比為1:2
intent.putExtra("outputY", 2);
intent.putExtra("aspectX", 20); // 保存圖片的寬和高
intent.putExtra("aspectY", 40);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("output", Uri.parse("file:///mnt/sdcard/temp"));
startActivityForResult(intent, 0);
//進入手機設(shè)置界面
//進入無線網(wǎng)絡(luò)設(shè)置界面(其它可以舉一反三)
Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
startActivityForResult(intent, 0);
//安裝apk
Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
//卸載apk
Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);
//進入聯(lián)系人頁面:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(People.CONTENT_URI);
startActivity(intent);
//查看指定聯(lián)系人:
Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);//info.id聯(lián)系人ID
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(personUri);
startActivity(intent);
Activity間的數(shù)據(jù)傳遞
正向

反向

Activity的四種加載模式
