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" />
这两个属性同时作用标明了程序的入口,缺一不可,同时也正是因为这两个属性,程序才会显示在应用列表中。
- Android基础-intent详解
- Android-Intent基础
- Android基础-1(intent)
- 【android基础】Intent
- [Android基础]Intent
- Intent android基础二
- Android基础-----Activity,Intent
- Android基础之Intent
- Android基础-Intent用法
- 【Android基础】趣谈Intent
- Android基础----Intent
- Android基础-Intent flag
- 基础-3 ANDROID Intent
- Android-基础-intent
- android基础(Intent)
- Android基础之Intent和Intent Filter
- Android基础之Intent 和 Intent 过滤器
- Android基础学习之Intent
- 简单电话本实现
- windows下配置React Native开发环境
- Java中Collection和Collections的区别
- 国内一线互联网公司内部面试题库(转)
- 修改注释模板
- Android基础----Intent
- 1009. Product of Polynomials (25)-PAT甲级真题
- poj 1502
- GC是什么?为什么要有GC?
- 基于RelativeLayout实现自动换行标签控件
- 多线程编程入门(15):线程同步工具之Semaphore(信号量)
- MFC如何获取控件的坐标
- android视图动画、属性动画、自定义动画、5.X SVG矢量动画机制详解
- 小幸运