Activity之Intent隐式启动PK显示启动
来源:互联网 发布:apache配置https 编辑:程序博客网 时间:2024/04/30 06:12
一、标题中所说启动其实是跳转到下一个Activity方式。
严格意义上的启动指的是startActivity(intent),或者带值返回startActivityForResult(intent)。
本文就Activity的两种跳转方式具体写法、特点及用法(使用场合)做一下比较:
二、先记下结论:即使用场合
1、任何一个Activity的启动,我们都可以有两种方式(显式和隐式)
2、显式启动:用于启动同一个应用中的Activity,效率高
3、隐式启动:用于启动不同应用中的Activity。
三、写法:
1、Intent
Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。
Intent七大属性:由以下各个组成部分:
component(组件):目的组件
action(动作):用来表现意图的行动
category(类别):用来表现动作的类别
data(数据):表示与动作要操纵的数据
type(数据类型):对于data范例的描写
extras(扩展信息):扩展信息
Flags(标志位):期望这个意图的运行模式
有关七大属性讲解详见《Intent七大属性》
官方建议使用隐式Intent。七大属性中,除了component属性为显式,其他均为隐式。
2、隐式启动:
相比于显式Intent,隐式Intnet则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动。
清单文件中要为Activity注册
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.sina.intent01.MY_ACTION"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>
Activity 中 Intent Filter 的匹配过程 :
button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri data=Uri.parse("http://www.baidu.com"); intent.setData(data); startActivity(intent); } });
如果有多个组件被匹配成功,就会以对话框列表的方式让用户进行选择。
每个Intent中只能指定一个action,但却能指定多个category;类别越多,动作越具体,意图越明确
在Intent添加类别可以添加多个类别,那就要求被匹配的组件必须同时满足这多个类别,才能匹配成功。操作Activity的时候,如果没有类别,须加上默认类别
当Intent匹配成功的组件有多个时,显示优先级高的组件,如果优先级相同,显示列表让用户自己选择
优先级从-1000至1000,并且其中一个必须为负的才有效
注:系统默认的浏览器并没有做出优先级声明,其优先级默认为正数。
3、显式启动;
Intent intent = new Intent(); //setClass方法的第一个参数是一个Context对象 //Context是一个类,Activity是Context类的子类,也就是说,所有的Activity对象,都可以向上转型为Context对象//setClass函数的第二个参数是一个Class对象,在当前场景下,应该传入需要被启动的Activity类的class对象,不同包时,写类名的时候必须带上包名,否则找不到。 intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent); //或者更简单的写法,通过带参构造函数直接传值Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent);
三、特点
显式启动:直接指定要跳转的Activity类名,不用过滤,效率高,适用于同一个应用中的不同Activity跳转
隐式启动:需要过滤,相对耗时,但可以找到所有之匹配的应用。适用于不同应用之间的Activity跳转。
- Activity之Intent隐式启动PK显示启动
- Intent显示启动与隐式启动
- Intent 用法之Activity启动
- 为什么隐式intent无法启动activity
- Intent的隐式方式启动Activity
- Android Activity Intent隐式启动
- 使用隐式的Intent启动activity
- 关于隐式Intent启动其他activity
- Activity生命周期,显示隐式启动和四种启动模式,activity之间通过Intent传递数据
- Intent、activity生命周期、activity启动模式、横竖屏显示
- 使用Intent启动Activity
- 利用Intent启动Activity
- 使用Intent启动Activity
- 使用Intent启动Activity
- Intent 启动 Activity
- Intent启动一个Activity
- 使用Intent启动Activity
- 漫谈Intent启动Activity
- 路由器上再接一个无线路由器-wifi-转
- 远程登录管理工具SecureCRT连接VMWare下的CentOS
- 使用HttpClient发送https请求GET方式
- 基于Socket的UDP和TCP编程介绍
- 浏览器缓存知识小结及应用
- Activity之Intent隐式启动PK显示启动
- 【lufylegend】年会九宫格抽奖程序
- rtsp简介(ZT)之消息流程-转
- s3c2440 tty驱动
- 橘子皮巧治咳嗽痰多 泡茶喝-转
- Linux 系统应用编程——网络编程(高级篇)
- Python-弹球游戏增强版
- MySQL修改密码和加密
- HA下的Spark集群工作原理解密