国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Android開發速成簡潔教程七:Intents和Intent Filters

移動開發 Android
Android應用中的三個核心組件:Activities,Services和broadcast receivers都是通過稱為“Intent”的消息來激活的。Intent本身為一個數據載體,可以描述想要執行的操作以及用于這個操作的數據和其它屬性。

Android應用中的三個核心組件:Activities,Services和broadcast receivers都是通過稱為“Intent”的消息來激活的。Android應用一個特點是“低耦合”,各個Activities,Services 和broadcast receivers相當獨立,可以看成是一個個“迷你應用”,而Intent是這些“迷你應用”的粘合劑,Intent不但可以用于同一個 Application之間Activities,Services和broadcast receivers的交互,也可以用于不同Application之間Activities,Services和broadcast receivers的交互。

Intent本身為一個數據載體,可以描述想要執行的操作以及用于這個操作的數據和其它屬性。用個容易理解的概念,在訪問網站時,我們需要提供網站的 URL,有時還需要通過URL參數,在Android世界里,Intent 的功能類似于URL,Android操作系統根據Intent來觸發對于的Activitives,Services或是Broadcast Receivers。

Android應用中的三個核心組件:Activities,Services和broadcast receivers都是通過Intent來觸發的,當它們觸發的機制各不相同,而且不會有重疊,也就是說發給Activity的Intent不會激活 Service或是broadcast receivers,發給broadcast receivers的Intent也不會觸發Activity和Service。

  1. Activity 通過方法 Context.startActivity() 和 Activity.startActivityForResult()來調用。以函數調用為參考startActivity() 相當于調用無返回值的函 數,startActivityForResult()調用的Activity有返回值,可以通過Activity.setResult()來返回結果。
  2.  Context.startService()用來初始化Service,Context.bindService()可以用來建立與目標Service之間的連接,如果Service沒有運行,則會啟動該Service。
  3. Broadcast Receiver是通過  Context.sendBroadcast(), Context.sendOrderedBroadcast(), 和Context.sendStickyBroadcast()來觸發的。大部分的Broadcast消息來自于Android操作系統,如電池狀態,來 電,短消息等。

和URL不太一樣的是,URL和網站一般是一一對應的,而一個Intent可以用來觸發某個指定的Activity,Service或是 Broadcast Receiver,或是觸發多個滿足Intent條件的Activities,Services或是Broadcast Receivers。

下面來看看Android OS如何根據Intent來找到滿足觸發條件的Activity,Service或是Broadcast Receiver.  借用SQL 數據庫的概念可以更好的理解。

     SELECT (Activitives|Services|Broadcast Receivers) AS Target

     FROM  (List in AndroidManifest.xml)

     WHERE Intent Meet Target’s (Intent Filter)

意思就是從AndroidManifest.xml中定義的Activities,Services和Broadcast Receiver列表中查找符合Intent 條件的Activities,Services,或是Broadcast Receivers。所有能活被激活的Activity,Service和Broadcast Receiver都必須在AndroidManifest.xml有定義,否則Android OS無法查詢到該目標,相當于數據庫中無記錄,即使你在代碼中定義了該Activity,Service或Broadcast Receiver。

Intent

Intent本身為一個數據載體,可以描述想要執行的操作以及用于這個操作的數據和其它屬性。它主要包含下列信息:

Component name:可以處理該Intent的組件名稱,組件名稱指定義Activity,Service 的包和類的全名稱。比如類名為com.pstreets.gisengine.AndroidGISEngineTutorial ,包名為com.pstreets.gisengine。 組件名稱為可選項,如果指定了,意味明確指定用來響應該Intent的Activity,Service。

Action: 列出需要執行的操作名稱。或者在Broadcast Intents的情況下給出發生的事件名稱。

Constant Target component Action
ACTION_CALL activity 開始打電話.
ACTION_EDIT activity 顯示編輯對話框.
ACTION_MAIN activity 作為一個任務(應用)的起始Activity,對于可以從Android應用列表的應用來說,都需要在AndroidManifest.xml 中設置ACTION_MAIN的Intent-Filter屬性。
ACTION_SYNC activity 同步數據.
ACTION_BATTERY_LOW broadcast receiver 電池電量低告警.
ACTION_HEADSET_PLUG broadcast receiver 耳機插入或拔出.
ACTION_SCREEN_ON broadcast receiver 屏幕打開或關閉.
ACTION_TIMEZONE_CHANGED broadcast receiver 時區變動.

Data:定義不數據的URL以及數據的MIME類型。不同的Action能夠處理的Data類型也不一樣,比如 ACTION_CALL,它處理的數據格式為tel: URI,URI為電話號碼。

Category: 定義了可以響應Intent的附加信息,一個Intent可以指定多個Category類型。和Action類似,Android 預定義了一些Category類型:

Constant  Meaning 
CATEGORY_BROWSABLE 表示目標Activity可以使用瀏覽器安全顯示指定連接,比如說一個圖片或是Email消息.
CATEGORY_GADGET 表示該Activity可以當作一個Gadget嵌入到其它可以放置Gadget的Activity中。
CATEGORY_HOME 表示還Activity是Home Screen,可以設置這個屬性來替換Android自帶的Home Screen。
CATEGORY_LAUNCHER 該Activity可以顯示在Android程序管理器中。一般應用的主Activity都會在AndroidManifest.xml 定義該屬性。

Extra:  附加Key-Value列表,可以向目標Activity傳送附加參數。可以理解成函數調用時的參數。

Flags:指出Android啟動目標Activity時的一些選項(比如目標Activity隸屬于那個應用等)。

除非是Intent明確指定目標(Explicitly)Activity的類和包名稱,這是Activity無需在 AndroidManifest.xml定義intent-filter,其它情況也叫隱含(Implicit)方式啟動目標Activity,在這種情 況下Android 操作系統查找目標Activity,Service或是Broadcast Receiver時主要根據Intent 的Action,Data 和Category屬性來匹配定義在AndroidManifest.xml 中 Activity,Service或是Broadcast Receiver的 Intent Filters。

Intent Filters

Android中沒個有效的Activity,Service,Broadcast Receiver都必須在AndroidManifest.xml有對應的定義。除非只使用明確調用發生來啟動目標Activity,每個 Activity都需要定義一個intent-filter。下面是是明確指定目標Activity的示例代碼:

  1. Intent intent=new Intent(SplashActivity.this,GNavigator.class); 
  2. startActivity(intent); 

而更一般的情況,Activity在AndroidManifest.xml具有如下定義:

  1. <activity android:name=”.AndroidGISEngineTutorial” 
  2.     android:label=”@string/app_name”> 
  3.  <intent-filter> 
  4.   <action android:name=”android.intent.action.MAIN” /> 
  5.   <action android:name=”com.example.project.SHOW_CURRENT” />    
  6.   <action android:name=”com.example.project.SHOW_RECENT” />    
  7.   <action android:name=”com.example.project.SHOW_PENDING” /> 
  8.    
  9.   …. 
  10.   <category android:name=”android.intent.category.DEFAULT” />    
  11.   <category android:name=”android.intent.category.BROWSABLE” /> 
  12.   … 
  13.    <data android:mimeType=”video/mpeg” android:scheme=”http” . . . />     
  14.    <data android:mimeType=”audio/mpeg” android:scheme=”http” . . . /> 
  15.    …. 
  16.  </intent-filter> 
  17. </activity> 

Activity的intent-filter可以包含action,category,data 子元素,給出了該Activity能夠處理的Intent的Action,Category和數據類型。Android 操作系統就是根據Activity的intent-filter來匹配Intent,從而觸發目標Activity,或是 Service,Broadcast Receiver。

最常見的一個Intent Filter組合如下:

  1. <intent-filter . . . >    
  2.    <action android:name=”code android.intent.action.MAIN” />    
  3.    <category android:name=”code android.intent.category.LAUNCHER” /> 
  4.   </intent-filter> 

表示用戶可以從Android設備的應用程序管理器啟動該Activity,這個Activity為應用的主Activity,主Activity可以再使用Intent觸發或是啟動其它Activity。

責任編輯:閆佳明 來源: imobilebbs
相關推薦

2013-12-26 15:10:08

Android開發應用和框架Linux 內核

2013-12-26 15:43:07

Android開發Android應用Activities

2013-12-26 15:18:09

Android開發安裝開發環境

2013-12-27 14:05:22

Android開發Android應用Dialog

2013-12-27 14:16:43

Android開發Android應用線程

2013-12-27 14:34:46

Android開發Android應用短信觸發示例

2013-12-27 16:06:10

Android開發Android應用發布應用

2013-12-26 15:46:30

Android開發Android應用用戶界面設計

2013-12-27 13:27:05

Android開發Android應用RadioButton

2013-12-27 13:49:22

Android開發Android應用Button

2013-12-26 16:59:12

Android開發Android應用數據綁定Data Bi

2013-12-27 12:51:44

Android開發Android應用引路蜂

2013-12-26 15:34:19

Android開發Android應用基本概念

2013-12-27 15:31:26

Android開發Android應用資源Resources

2013-12-26 16:46:21

2013-12-26 17:08:36

Android開發Android應用自定義Adapter顯

2013-12-27 13:00:30

Android開發Android應用Context Men

2013-12-27 14:10:36

Android開發Android應用Transform

2013-12-27 15:11:17

Android開發訪問Internet繪制在線地圖

2013-12-27 12:42:15

Android開發Android應用引路蜂
點贊
收藏

51CTO技術棧公眾號

四虎8848精品成人免费网站| 精品久久久久久久久久久久| 欧美黄网在线观看| 99精品黄色片免费大全| 亚洲国产精品毛片av不卡在线| 国产精品一级片| 欧美福利视频在线| 欧美日韩看看2015永久免费| 97香蕉久久超级碰碰高清版| 性xxxx欧美老肥妇牲乱| 新呦u视频一区二区| 国产人久久人人人人爽| 亚洲裸体视频| 在线观看国产91| 精品av中文字幕在线毛片| 欧美变态口味重另类| aiai久久| dy888午夜| 一区二区三区在线视频观看 | 麻豆精品视频在线观看| 日本在线一二三区| 欧美日韩电影在线播放| 成人在线观看免费| 日韩中文字幕久久| 欧美黄污视频| 美女无遮挡网站| 毛片在线视频| 国内免费久久久久久久久久久| 91成人福利社区| 中文字幕九色91在线| 久久精品色播| 久久国产一区二区| 国产精品麻豆欧美日韩ww| 欧美国产激情视频| 91官网在线观看| 久久99性xxx老妇胖精品| 日产精品久久久一区二区| 一区二区三区四区高清精品免费观看| 欧美大片免费| 日韩免费精品视频| 久久五月激情| 在线观看18视频网站| 久久精品久久99精品久久| 樱桃视频免费看| 中文字幕av一区二区三区谷原希美| 亚洲啊v在线| 经典三级在线视频| 一区二区三区在线免费观看| 理论片一区二区在线| 欧美精品二区三区四区免费看视频 | 中国女人久久久| 国产毛片av在线| 欧美在线激情网| 亚洲va欧美va人人爽午夜| 精品国产a一区二区三区v免费| 给我免费播放片在线观看| 亚洲性69xxxbbb| 国产精品久久毛片av大全日韩| 亚洲伊人精品酒店| 懂色一区二区三区免费观看| 小早川怜子影音先锋在线观看| 日韩小视频网站| 久久久久亚洲精品国产| 精品久久香蕉国产线看观看亚洲 | 日本色综合中文字幕| 51xtv成人影院| 无码人妻精品一区二区三区99v| 亚洲免费av片| 欧美激情一区二区三区不卡 | 日本欧美大码aⅴ在线播放| 中文字幕av在线| 一本色道久久88亚洲综合88| 日韩不卡一二三区| 少妇视频一区| 免费看黄视频网站| 国产精品扒开腿做| 久久精品亚洲精品国产欧美kt∨| 午夜欧美巨大性欧美巨大 | 26uuu亚洲婷婷狠狠天堂| 你懂的一区二区三区| 成人在线播放网址| 蜜桃久久久久久久| 国产www视频在线观看| 日本10禁啪啪无遮挡免费一区二区 | 爱草在线视频| 国产精品v欧美精品∨日韩| 在线日韩欧美视频| 亚洲www啪成人一区二区麻豆| 水蜜桃久久夜色精品一区的特点| 麻豆tv在线| 日本夜爽爽一二区| 欧美这里只有精品| 欧美一级片免费观看| 中文综合在线观看| 欧美性猛xxx| 亚洲精品成a人| 雨宫琴音一区二区三区| 国产精品调教| 欧美xxx视频| 色婷婷在线播放| 污香蕉视频在线观看| 嫩草av久久伊人妇女超级a| 中文字幕在线亚洲三区| 成人免费视频网| 色妞在线综合亚洲欧美| 99国产一区二区三精品乱码| 久久在线电影| 精品国产视频| 欧美日韩卡一| 国产精品美女诱惑| 欧美精品videosex性欧美| 精品久久97| 日韩在线视频在线| 欧美精品中文字幕一区| 日韩有码在线视频| 久久久精品视频成人| 欧美激情精品久久久久久久变态| 欧美成人激情视频| 亚洲精品v欧美精品v日韩精品 | 成人片在线看| 成人福利av| 亚洲成人av观看| 看亚洲a级一级毛片| 91成人入口| 99视频一区| 欧美gvvideo网站| 国产一区二区三区四区三区四| 欧美日韩女优| 亚洲精品亚洲人成在线观看| 久久免费大视频| 亚洲免费高清| 91在线视频18| 在线观看日韩电影| 日韩视频一区二区在线观看| 亚洲福利小视频| 911精品国产一区二区在线| 精品日产卡一卡二卡麻豆| 亚洲第一天堂av| 久久黄色av网站| 国产精品久久久久久久久久新婚| 欧美成人精品h版在线观看| 亚洲精选中文字幕| 国产一区二区免费| 国产精品大片免费观看| 欧美三区不卡| 在线精品一区二区| 久久天堂精品| 中文字幕av资源一区| 欧美一区二区三区色| 97色在线播放视频| 欧美日韩免费观看一区| 日韩五码在线观看| 色大18成网站www在线观看| 国产欧美日韩小视频| 在线播放国产区| 在线观看福利电影| 成人在线电影在线观看视频| 天堂久久一区二区三区| 91蜜桃在线免费视频| 91免费观看视频在线| 7777精品久久久大香线蕉| 亚洲一二三区精品| 超碰av在线免费观看| 米奇777四色精品人人爽| 精品日产免费二区日产免费二区| 成人免费高清在线观看| 日本韩国一区二区三区视频| 亚洲成年人影院| 国内精品一区二区三区| 成人a在线视频| 久久综合九色综合88i| sese综合| 福利视频网站一区二区三区| 一区二区三区中文字幕电影| 国产伦精品一区二区三区免 | 亚洲欧美日韩国产一区二区三区| 日韩影院精彩在线| 久久先锋资源网| 亚洲高清免费视频| 日韩一级精品视频在线观看| 久热精品视频在线观看| 免播放器亚洲| 亚洲成人福利在线观看| 亚洲成a人片| 日韩视频一区| 亚洲综合色成人| 欧美精品一区男女天堂| 国产成人av网址| 国产免费成人在线| 97超碰人人在线| 91精品日本| 丁香网亚洲国际| 一区二区三区黄色| 免费在线观看视频| 久热这里只精品99re8久| 国产日产欧美精品| 7777kkkk成人观看| 久久精品国产亚洲精品| 亚洲美女在线观看| 亚洲国产一区二区三区四区|