WEB开发网
开发学院手机开发Android 开发 Android组件间的交互和进程间IPC通信 阅读

Android组件间的交互和进程间IPC通信

 2010-07-21 01:09:00 来源:WEB开发网   
核心提示:Intent openSomeDiagIntent = new Intent();openSomeDiagIntent.setAction(“edwin.demo.fooActivity”);this.startActivity(openSomeDiagIntent);上面的隐式消息不包含具体的目的地,而是仅包含一个名

Intent openSomeDiagIntent = new Intent();

openSomeDiagIntent.setAction(“edwin.demo.fooActivity”);

this.startActivity(openSomeDiagIntent);

上面的隐式消息不包含具体的目的地,而是仅包含一个名位“Action”的特征字符串,Action就是上文所说的Intent特征的一种。从字面上来理解,可以理解为这个消息所代表的是完成某一个动作的含义,由action来标明动作的名字。所有能够处理这种动作的Activity都可以收到该消息。对应的,可能在同一个程序或者另外的某个程序的AndroidMainifest.xml中声明了下面这样的一个Activity:

< activity android:name=”.fooActivity”>

< intent-filter>

< action android:name=”edwin.demo.fooActivity” />

< /intent-filter>

< /activity>

那么这就表示这个Activity能够收到并处理action为“edwin.demo.fooActivity”的消息。所以上面的代码串起来的效果就是,打开了这个名为.fooActivity的窗口,无论这个窗口是在当前的进程中还是另外的一个程序中。

除了Action这种消息特征外,Intent还有category,data这两个特征描述属性。Category同样是一个字符串,从字面上理解就是 “消息的分类特征”。从程序上看其和Action的不同在于,一个Intent只能有惟一的一个Action名称,但是却可以包含多个Category字符串;一个Intent-Filter可以包含多个Action节点但至少要包含一个,另一方面一个Intent-Filter可以包含零到多个 Category节点。Android在做Intent-Filter匹配的时候,Intent的Action属性匹配到Intent-Filter中的任何一个action节点,就表明拥有这个Intent-Filter的组件能够处理这种消息;而对于Category来讲一个Intent中的所有的 Category都必须存在于Intent-Filter中的Category节点中时,才表明匹配成功。Data属性可以描述一个Intent所要传递的数据类型和URI,每一个Intent只能包含一个Data属性。其中数据的类型使用MIME类型描述方式来描述,例如video/mpeg表示编码格式为mpeg的视频,这里也可以使用通配符,例如video/*表示任意格式的视频文件类型;数据的URI由scheme(协议),host,port,path四部分组成:scheme://host:port/path,例如http://test.com:8080 /file/file1 或者content://edwin.demo.contentProvider:100/forder/content1,其中path部分也是可以支持通配符的。Data属性是一个很有用的描述特征,例如下面这样的一个包含data节点的Intent-Filter:

  <activity android:name=”.actHttpVideoMan”>

上一页  1 2 3 4  下一页

Tags:Android 组件 交互

编辑录入:coldstar [复制链接] [打 印]
赞助商链接