我们知道,Intent主要用来激活安卓几大组件,那么它具体是怎样来激活的?激活时是否可以携带java对象?为何要将对象序列化后才能传递?
一、Intent官网解释
Intent可以被startActivity用来加载Activity,也可以被broadcastIntent发送给指定的BroadReceiver组件,
或者被startService、bingService来与后台service通信。
Intent最主要作用就是加载Activity,好比Activity之间的胶水。
Intent数据结构:
- action:所要执行的动作;(例如:ACTION_CALL创建打电话Activity;ACTION_BATTERY_LOW 发出广播警告电池电量低,)
- data: 要使用的数据(Uri);
- category:关于目标组件的信息;
- component:目标组件的类名;
-
extras :这是Bundle数据。
Intent解析:
- 显式Intent,指定了目标组件的类名,即component,则已知目标组件,不需解析;
-
隐式Intent,未指定目标组件component,或者不知道、不关心谁来接收Intent,需要Android自己去解析找到目标组件。
隐式Intent解析方法:
1.在AndroidManifest.xml里所有<intent-filter>及其中定义的Intent;
2.通过PackageManager(获取当前设备所安装的应用程序package)查找能处理这个Intent的component。匹配Action、type、category三个变量来寻找。
二、简单解释:
Intent可以激活Andorid的三大组件:Activity、Service和BroadcastReceiver。使用Intent时一般要显式指定目标组件,若未指定则要根据Intent附带的action、type、category三个值来解析,查找能处理的组件。三、问题:Intent如何实现组件的切换,具体流程?
1、基本方法:(以启动Activity为例)Intent i = new Intent(MainActivity.this, TargetActivity.class); startActivity(i);










