NO IMAGE
目錄

1intent:指明當前元件想要執行的動作,還可以用於不同元件之間傳遞資料。Activity、Service、BroadcastReceiver。其中Service只能顯式呼叫來啟動(通過隱式的Intent不確定最終哪個App中的哪個Service會啟動起來以響應Intent)

2.顯示Intent

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

3.隱式Intent.

通過action、data、category這三個方面描述Intent,被呼叫者通過在manifest檔案中宣告的一系列Intent-Filter來描述自己能夠響應哪些意圖,只有廣播可以在程式碼中建立。

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_BATTERY_LOW);
intentFilter.addCategory(Intent.CATEGORY_APP_EMAIL);
intentFilter.addDataType("video/mpeg");
Reciver reciver = new Reciver();
registerReceiver(reciver, intentFilter);

4.Intent的匹配規則:只有action、data、category三個都匹配,Intent才是匹配成功。一個元件若宣告瞭多個Intent-Filter,只需要匹配任意一個即可。

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.ALL_APPS"/>
<category android:name="android.intent.category.ALTERNATIVE"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

1).action的匹配規則

一個Intent-Filter中可宣告多個action,Intent中也可以設定多個action,Intent中的一個action與其中的任一個action在字串形式上完全相同,就匹配成功。可通過setAction方法為Intent設定action,也可在構造Intent時傳入action。隱式Intent必須指定action。

2).category的匹配規則

Intent中的category必須都在Intent Filter中出現才算匹配成功。Intent可以不指定category,若Intent中未指定category,系統會自動為它帶上“android.intent.category.DEFAULT”。所以,想要接收 Intent的元件都必須在manifest檔案中的Intent Filter宣告中帶上“android.intent.category.DEFAULT”。可以通過addCategory方法為Intent新增category

3).data的匹配規則

data android:scheme="string"
android:host="string"
android:port="80"
android:path="/string"
android:pathPattern="string"
android:pathPrefix="/string"
android:mimeType="text/plain"/>

mimeType表示image/ipeg,video/*等媒體型別,可以表示data是圖片、文字、視訊等等.

URI其結構一般為:<scheme>://<host>:<port>/[<path>|<pathPrefix|<pathPattern>>(Uri通用資源標誌符(UniversalResource Identifier,簡稱”URI”)。Uri代表要操作的資料,Android上可用的每種資源影象、視訊片段等都可以用Uri來表示。URI一般由三部分組成:訪問資源的命名機制。存放資源的主機名。資源自身的名稱,由路徑表示)

scheme:整個URI的模式,如常見的http,file等,注意如果URI中沒有指定的scheme,那麼整個uri無效

 host:URI的域名,比如我們常見的www.mi.com,www.baidu.com

port:埠號,只有在URI中指定了scheme和host之後埠號才是有意義的;

path,pathPattern,pathPrefix包含路徑資訊,path表示完整的路徑,pathPattern在此基礎上可以包含萬用字元,pathPrefix表示路徑的字首資訊.在Inten中,通過setDataAndType(Uri data, String type)方法對date進行設定。這個方法接受兩個引數,第一個就是URI,第二個就是String型別的mimeType.

Intent中的data必須和過濾規則中的某一個data完全匹配;過濾規則中可以有多個data存在,但是Intent中的data只需匹配其中的任意一個data即可.過濾規則中可以沒有指定URI,但是系統會賦予其預設值:content和file.為Intent設定data的時候必須要呼叫setDataAndType()方法,而不能先setData再setType,因為這兩個方法,都會清除對方的值.

5.採用PackageManager的resolveActivity或者Intent的resolveActivity方法會獲得最適合Intent的一個Activity;呼叫PackageManager的queryIntentActivities會返回所有成功匹配Intent的Activity.

6.intent的傳遞物件。

物件的序列化:將物件轉為可儲存可傳輸狀態,物件序列化的目標是將物件儲存到磁碟中或者允許在網路直接傳輸物件。

1)Serializable方式

實現Serializable介面。Serializable介面是一個標記介面實現該介面無須實現任何方法,只是表明該類的例項是可序列化的。

2).Parcelable方式。實現原理是將一個完整物件進行分解,分解後的每一個部分都是Intent支援的資料型別。