Android启动Activity的两种方式
来源:互联网 发布:linux sqlplus 乱码 编辑:程序博客网 时间:2024/05/16 02:33
Android 中启动Activity的两种方式
Android中Activity的启动方式有两种,分为显式调用和隐式调用。而这两种方式却存在很大的区别,下面将介绍他们是如何启动和他们之间的区别在哪
首先是显调用,其实显式调用很简单,而且也是日常开发中使用得最多的。两行代码的事,哈哈;
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); }});
这样就成功地启动了SecondActivity;是不是很简单,不说了,哈哈,这不是本文的重点,那我们就来看看显式调用和他有何不同
想要通过隐式调用的方式启动Activity,那么Intent必须能够匹配目标Activity的IntentFilter中的过滤信息,如果不匹配将无法启动目标组件,而IntentFilter中的过滤信息包括action、category和data。我们先来看个例子:
首先SecondActivity在manifests中的配置如下
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="secendActivity"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="sd"/> </intent-filter> </activity>
然后MainActivity中跳转到SecondActivity中的代码如下:
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setAction("secendActivity"); intent.addCategory("sd"); startActivity(intent); }});
上面的示例就通过隐式调用的方式从MainActivity启动了SecondActivity,那么他是怎么匹配IntentFilter中的信息的呢?
接下来我们看看他的匹配规则,首先是action ,action是一个字符串,action的匹配规则是这样的;Intent中的匹配信息必须和过滤规则中的action匹配,就是字符串的值完全相同,当IntentFilter中有多条匹配规则时,Intent中的匹配信息可以是一条也可以是多条,也就是说只要Intent中的匹配信息有一条和IntentFilter中的匹配规则相同,那么就可以匹配成功。当然,系统中为action默认指定了很多的action,我们也可以根据自己的需求自己定义;
Category的匹配规则:category的匹配规则和action不同,他要求Intent如果Intent中出现category,那么category中的匹配信息必须是IntentFilter规则中所定义的;
当然,不管是一条还是多条都可匹配成功。还有一点需要注意的是;当我们使用隐式调用的方式调用startActivityZ()和startActivityForResult()时,系统会默认给Intent加
上android.intent.category.DEFAULT这个category,也就是是当我们通过隐式调用方式启动Activity时必须在目标组件的IntentFilter规则中加上这条;
Data的匹配规则和action类似,只是data的写法稍微复杂,data由两部分主组成,mimeType和Uri; mimeType指媒体类型,Uri的格式包括Scheme:Uri的模式,如果不定义
Scheme,那么这个Uri的参数将全部无效。另外还有Host:Uri的主机名;Port:Uri的端口号,Path:Uri的路径信息;需要注意的是:如果Intent指定完整的data,必须调用
setDateAndType方法,因为不能调用setData后再调用setType,因为这两个方法会彼此清空对方的值;
- Android启动Activity的两种方式
- Android中activity的两种启动方式
- 启动Activity的两种方式
- Activity的两种启动方式
- 启动Activity的两种方式介绍
- Intent 启动 Activity的两种方式
- activity启动service的两种方式
- Activity两种启动方式
- 启动Activity两种方式
- Android开发——Activity启动其他Activity的两种方式
- Activity启动其他的Activity的两种方式
- android:两种启动activity的方法
- Android Activity启动的两种方法
- android启动Activity的两种方法
- Android基础(四)——Activity的两种启动方式、Intent初探
- 安卓-启动Activity的两种方式
- android启动activity的几种方式
- android启动activity的几种方式
- Centos7搭建nginx开发环境
- 关于欧拉函数的一些理解
- 【git使用详解(1)】-历史
- SVN批处理备份失败--编码问题
- ZOJ 3992 && 2017CCPC秦皇岛 L:One-Dimensional Maze
- Android启动Activity的两种方式
- 最长上升子序列(LIS)的求法
- c++基础之拷贝构造函数
- java的jar打包成exe文件
- 深入理解JVM之类文件结构
- Maximum Product(简单枚举)
- CSS3 二维变形
- Java浅克隆与深克隆
- 数组(九)--十进制转换为十六进制