Android基础----Intent

来源:互联网 发布:sql case when 多表 编辑:程序博客网 时间:2024/06/06 16:44

简介:

在最开始学习Android时候我们都会被告知Android的四大组件:Activity,BroadcastReceiver,Service,Intent,之前已经讲过前边的三大组件,现在我们来看看Intent。Intent(意图),就像是其中文翻译一样,intent其实表达的是一种意图,即要让前边的三大组件怎么配合协作,所以说Intent其实是Android系统中的信使,负责调度各组件,传递消息。Intnet分为显示Intent和隐式Intent。

基本用法:

显式Intent:

直接指定Intent要启动的具体的组件的名称,一般建议用这种方式启动Service

 //显式的指定Intent要启动的Activity        Intent intent = new Intent(ScrollingActivity.this,SecondActivity.class);        //启动Activity或者是Service        startActivity(intent);        startService(intent);

隐式Intent:

并不是直接指定要启动的组件,而是为intent添加相应的匹配规则,然后根据四大组件在配置文件中定义好的过滤规则进行过滤匹配。

为Intent定义规则:

Intent intent1 = new Intent();intent.setAction();intent.addCategory();intent.setDataAndType();//启动Activity或者是ServicestartActivity(intent);startService(intent);

在AndroidManifest文件中为组件定义IntentFilter进行过滤:

 <activity            android:name=".ScrollingActivity"            android:label="@string/app_name"            android:theme="@style/AppTheme.NoActionBar">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />                <data android:mimeType="video/mpeg"/>            </intent-filter>        </activity>

IntentFilter过滤规则:

action:

Intent中的action必须要能和intentFilter中的action匹配(字符串值完全一样),也就是说,对于intent中的action,只要有一个和IntentFilter中定义的action匹配就算是匹配成功。同时action区分大小写。

category:

Intent中的category可以没有,这样系统就会为其配置一个默认的category:

< category android:name=”android.intent.category.DEFAULT”/>

若为Intent配置了category,则要求intent中配置的所有category都能在intentFilter中匹配到,只有intent中所有的category都匹配成功才算匹配成功。

data:

data的匹配规则和action差不多,但是也有区别。首先看一下data的结构,它由两部分组成:mimeType和URI。

  • mimeType指媒体类型,比如image/jpeg表示图片类型中.jpeg格式的图片
  • URI中包含的比较多:

< scheme>://< host >:< port >/[ < path >|< pathPrefix > | < pathPattern >]

实例:
content://com.example.project:200/folder/subfolder/etc
http://www.baidu.com:80/search/info

  • scheme:URI的模式,比如说http,file,content等,只有指定了这个参数之后,后续的才会有意义。
  • host:URI的主机名,同样是必须的字段
  • port:指定主机的端口号,同样是必须的字段
  • path/pathPatter/pathPrefix:表示路径信息,path表示完整的路径信息,pathPatter也可以表示完整的路径信息,但是其可以包含通配符,使用正则表达式,pathPrefix表示路径的前缀信息。可选其一使用。

注: 在给intent设置data信息时需要使用setDataAndType()方法才可以同时设置两者,不能分开使用setData()和setType()方法,因为这两个方法会互相消除另一个属性。

应用启动入口:

我们新建一个应用项目时会在配置清单文件中看见这两个:

<action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />

这两个属性同时作用标明了程序的入口,缺一不可,同时也正是因为这两个属性,程序才会显示在应用列表中。

0 0
原创粉丝点击