最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android學(xué)習(xí)之Intent中顯示意圖和隱式意圖的用法實(shí)例分析

 更新時(shí)間:2015年10月21日 12:30:47   作者:非著名程序員  
這篇文章主要介紹了Android學(xué)習(xí)之Intent中顯示意圖和隱式意圖的用法,以實(shí)例形式分析了Intent通訊的相關(guān)技巧與注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Android學(xué)習(xí)之Intent中顯示意圖和隱式意圖的用法。分享給大家供大家參考,具體如下:

Intent(意圖)主要是解決Android應(yīng)用的各項(xiàng)組件之間的通訊。

Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。

因此,Intent在這里起著一個(gè)媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。

例如,在一個(gè)聯(lián)系人維護(hù)的應(yīng)用中,當(dāng)我們?cè)谝粋€(gè)聯(lián)系人列表屏幕(假設(shè)對(duì)應(yīng)的Activity為listActivity)上,點(diǎn)擊某個(gè)聯(lián)系人后,希望能夠跳出此聯(lián)系人的詳細(xì)信息屏幕(假設(shè)對(duì)應(yīng)的Activity為detailActivity)

為了實(shí)現(xiàn)這個(gè)目的,listActivity需要構(gòu)造一個(gè) Intent,這個(gè)Intent用于告訴系統(tǒng),我們要做“查看”動(dòng)作,此動(dòng)作對(duì)應(yīng)的查看對(duì)象是“某聯(lián)系人”,然后調(diào)用startActivity (Intent intent),將構(gòu)造的Intent傳入,系統(tǒng)會(huì)根據(jù)此Intent中的描述,到ManiFest中找到滿足此Intent要求的Activity,系統(tǒng)會(huì)調(diào)用找到的 Activity,即為detailActivity,最終傳入Intent,detailActivity則會(huì)根據(jù)此Intent中的描述,執(zhí)行相應(yīng)的操作。

對(duì)于intent主要的分類主要包括隱式意圖和顯式意圖。顯式意圖通常主要是啟動(dòng)本應(yīng)用中的Activity之間的數(shù)據(jù),而隱式意圖則常見于啟動(dòng)系統(tǒng)中的某些特定的動(dòng)作,比如打電話,或者是跨應(yīng)用的Activity啟動(dòng)。

通常來(lái)說:

顯式意圖:調(diào)用Intent.setComponent()或Intent.setClass()方法明確指定了組件名的Intent為顯式意圖,顯式意圖明確指定了Intent應(yīng)該傳遞給哪個(gè)組件。
隱式意圖:沒有明確指定組件名的Intent為隱式意圖。 Android系統(tǒng)會(huì)根據(jù)隱式意圖中設(shè)置的動(dòng)作(action)、類別(category)、數(shù)據(jù)(URI和數(shù)據(jù)類型)找到最合適的組件來(lái)處理這個(gè)意圖。

顯示意圖非常常用也非常簡(jiǎn)單一般用于應(yīng)用程序內(nèi)之間Activity的相互調(diào)用轉(zhuǎn)換,就不多說了,這里我介紹一下隱式意圖:

簡(jiǎn)單概括就是: 意圖包括:Action(動(dòng)作),Category(附加信息),Data(數(shù)據(jù),具體內(nèi)容),Tpye(類型)等等,舉個(gè)例子,說白了意圖就是啟動(dòng)一個(gè)組件的的完整的動(dòng)作信息,就像打人,打就是Action動(dòng)作,人就是Data內(nèi)容,而Type就是類型,打什么人呢?打壞人,type就是壞指的類型,只有這些信息全了才能執(zhí)行一個(gè)完整的意圖,當(dāng)然還有一些信息,比如scheme就是URI類型的數(shù)據(jù)的前綴,就像這個(gè)例子當(dāng)中的sms:,還有host主機(jī)名,path路徑等。

這里我給大家舉一個(gè)調(diào)用系統(tǒng)短信的例子,使用隱式意圖啟動(dòng)系統(tǒng)短信,并給10086發(fā)送信息的例子。代碼如下:

/** 
* 隱式意圖的方法啟動(dòng)系統(tǒng)短信 
* 
* 簡(jiǎn)單概括就是: 意圖包括:Action(動(dòng)作),Category(附加信息),Data(數(shù)據(jù),具體內(nèi)容),Tpye(類型)等等,舉個(gè)例子, 
* 說白了意圖就是啟動(dòng)一個(gè)組件的的完整的動(dòng)作信息 
* ,就像打人,打就是Action動(dòng)作,人就是Data內(nèi)容,而Type就是類型,打什么人呢?打壞人,type就是壞指的類型 
* ,只有這些信息全了才能執(zhí)行一個(gè)完整的意圖 
* ,當(dāng)然還有一些信息,比如scheme就是URI類型的數(shù)據(jù)的前綴,就像這個(gè)例子當(dāng)中的sms:,還有host主機(jī)名,path路徑等 
* 
* @param view 
*/ 
public void startOne(View view) { 
  Intent intent = new Intent(); 
  intent.setAction("android.intent.action.SENDTO");// 發(fā)送信息的動(dòng)作 
  intent.addCategory("android.intent.category.DEFAULT");// 附加信息 
  intent.setData(Uri.parse("sms:10086"));// 具體的數(shù)據(jù),發(fā)送給10086 
  startActivity(intent); 
}

上邊的這個(gè)例子是調(diào)用系統(tǒng)的東西,下邊我們來(lái)看看自定義的隱式意圖是怎么調(diào)用的。
首先是先在清單文件中進(jìn)行注冊(cè),代碼如下:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="net.loonggg.intent" 
 android:versionCode="1" 
 android:versionName="1.0" > 
 <uses-sdk 
  android:minSdkVersion="8" 
  android:targetSdkVersion="17" /> 
 <application 
  android:allowBackup="true" 
  android:icon="@drawable/ic_launcher" 
  android:label="@string/app_name" 
  android:theme="@style/AppTheme" > 
  <activity 
   android:name="net.loonggg.intent.MainActivity" 
   android:label="@string/app_name" > 
   <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
   </intent-filter> 
  </activity> 
  <activity android:name="net.loonggg.intent.SecondActivity" > 
   <intent-filter> 
    <!-- 自定義的動(dòng)作 --> 
    <action android:name="net.loonggg.xxx" /> 
    <!-- 自定義的scheme和host --> 
    <data 
     android:host="www.baidu.com" 
     android:path="/person" 
     android:scheme="loonggg" /> 
    <!-- 自定義的類型 --> 
    <data android:mimeType="person/people" /> 
    <!-- 附加信息 --> 
    <category android:name="android.intent.category.DEFAULT" /> 
   </intent-filter> 
  </activity> 
 </application> 
</manifest>

第二個(gè)Activity里的東西就是我們自定義設(shè)置的,就是下邊的這段代碼:

<activity android:name="net.loonggg.intent.SecondActivity" > 
 <intent-filter> 
  <!-- 自定義的動(dòng)作 --> 
  <action android:name="net.loonggg.xxx" /> 
  <!-- 自定義的scheme和host --> 
  <data 
   android:host="www.baidu.com" 
   android:path="/person" 
   android:scheme="loonggg" /> 
  <!-- 自定義的類型 --> 
  <data android:mimeType="person/people" /> 
  <!-- 附加信息 --> 
  <category android:name="android.intent.category.DEFAULT" /> 
 </intent-filter> 
</activity>

那在代碼中怎么調(diào)用自定義的呢?其實(shí)跟調(diào)用系統(tǒng)短信一樣,只不過調(diào)用系統(tǒng)短信里的那些動(dòng)作和數(shù)據(jù),系統(tǒng)已經(jīng)給我們配置好了,我們直接用就行,而自定義的就是我們自己寫的,調(diào)用方法和系統(tǒng)其實(shí)是一樣的。方法如下:

/** 
* 通過自定義的隱式意圖啟動(dòng) 
* 
* @param view 
*/ 
public void startTwo(View view) { 
  Intent intent = new Intent(); 
  intent.setAction("net.loonggg.xxx"); 
  intent.addCategory("android.intent.category.DEFAULT"); 
  intent.setDataAndType(Uri.parse("loonggg://www.baidu.com/person"), 
    "person/people"); 
  startActivity(intent); 
}

特別注意的一點(diǎn)是:intent.setData(data)和intent.setType(type)注意這兩個(gè)方法會(huì)互相清除,意思就是:如果先設(shè)置setData(data)后設(shè)置setType(type),那么后設(shè)置的setType(type)會(huì)把前面setData(data)設(shè)置的內(nèi)容清除掉,而且會(huì)報(bào)錯(cuò),反之一樣,所以如果既要設(shè)置類型與數(shù)據(jù),那么使用setDataAndType(data,type)這個(gè)方法。

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android跑馬燈MarqueeView源碼解析

    Android跑馬燈MarqueeView源碼解析

    這篇文章主要為大家詳細(xì)介紹了Android跑馬燈MarqueeView源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Kotlin中協(xié)程的創(chuàng)建過程詳析

    Kotlin中協(xié)程的創(chuàng)建過程詳析

    使用協(xié)程的專業(yè)開發(fā)者中有超過 50% 的人反映使用協(xié)程提高了工作效率,下面這篇文章主要給大家介紹了關(guān)于Kotlin中協(xié)程創(chuàng)建過程的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Android中的windowSoftInputMode屬性詳解

    Android中的windowSoftInputMode屬性詳解

    這篇文章主要介紹了Android中的windowSoftInputMode屬性詳解,本文對(duì)windowSoftInputMode的9個(gè)屬性做了詳細(xì)總結(jié),需要的朋友可以參考下
    2014-10-10
  • android TabLayout的指示器寬度問題

    android TabLayout的指示器寬度問題

    這篇文章主要介紹了android TabLayout的指示器寬度問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-04-04
  • 在Android環(huán)境下WebView中攔截所有請(qǐng)求并替換URL示例詳解

    在Android環(huán)境下WebView中攔截所有請(qǐng)求并替換URL示例詳解

    這篇文章主要介紹了在Android環(huán)境下WebView中攔截所有請(qǐng)求并替換URL示例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Android使用Walle實(shí)現(xiàn)多渠道打包功能的實(shí)現(xiàn)示例

    Android使用Walle實(shí)現(xiàn)多渠道打包功能的實(shí)現(xiàn)示例

    這篇文章主要介紹了Android使用Walle實(shí)現(xiàn)多渠道打包功能的實(shí)現(xiàn)示例,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下
    2021-04-04
  • Android仿淘寶商品拖動(dòng)查看詳情及標(biāo)題欄漸變功能

    Android仿淘寶商品拖動(dòng)查看詳情及標(biāo)題欄漸變功能

    這篇文章主要介紹了Android仿淘寶商品拖動(dòng)查看詳情及標(biāo)題欄漸變功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • android camera yuv幀水平翻轉(zhuǎn)實(shí)例

    android camera yuv幀水平翻轉(zhuǎn)實(shí)例

    今天小編就為大家分享一篇android camera yuv幀水平翻轉(zhuǎn)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-08-08
  • Android Service判斷設(shè)備聯(lián)網(wǎng)狀態(tài)詳解

    Android Service判斷設(shè)備聯(lián)網(wǎng)狀態(tài)詳解

    本文主要介紹Android Service判斷聯(lián)網(wǎng)狀態(tài),這里提供了相關(guān)資料并附有示例代碼,有興趣的小伙伴可以參考下,幫助開發(fā)相關(guān)應(yīng)用功能
    2016-08-08
  • Android實(shí)現(xiàn)房貸計(jì)算器功能

    Android實(shí)現(xiàn)房貸計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)房貸計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論

凌海市| 濉溪县| 河池市| 南丰县| 甘孜| 武邑县| 松潘县| 卓资县| 汉中市| 庄浪县| 晋中市| 江源县| 讷河市| 平山县| 鲁甸县| 黄平县| 阿坝县| 梁平县| 丽江市| 贵港市| 钦州市| 蒙自县| 安泽县| 宜川县| 文山县| 莲花县| 龙岩市| 英吉沙县| 三门县| 梓潼县| 旬阳县| 麻城市| 蓬莱市| 桦南县| 枣阳市| 葫芦岛市| 肥乡县| 且末县| 察哈| 娱乐| 腾冲县|