第5章Android组件通信 杨刚 中国人民大学
杨刚 中国人民大学 第5章 Android组件通信
本章学习目标 ·了解使用Intent进行组件通信的原理 ·掌握使用Intent后动Activity的方法 ■掌握获取Activity返回值的方法 m了解Intenti过滤器的原理与匹配机制
本章学习目标 n 了解使用Intent进行组件通信的原理 n 掌握使用Intent启动Activity的方法 n 掌握获取Activity返回值的方法 n 了解Intent过滤器的原理与匹配机制
5.1 Intent简介 ·在一个Android应用中,主要是由四种组件组 成的 Activity,Intent Receiver,Service,Content Provider 口这四种组件相互独立、可以互相调用,协调工作, 最终组成一个真正的Android应用。 在这些组件之间的通讯中,主要是由Intent协助完 成的 ■应用程序内部、应用程序之间数据通信
5.1 Intent简介 n 在一个Android应用中,主要是由四种组件组 成的 q Activity, Intent Receiver, Service, Content Provider q 这四种组件相互独立、可以互相调用,协调工作, 最终组成一个真正的Android应用。 q 在这些组件之间的通讯中,主要是由Intent协助完 成的 n 应用程序内部、应用程序之间数据通信
5.1 Intent简介 Intent:一种轻量级的消息传递机制 口Intent:意图,目的”,可以理解为不同组件之间通信 的媒介信使”Vhat do you want to do? 口它是一个动作的完整描述,包含了动作的产生组件、接 收组件和传递的数据信息 口Intenti的目的:用于组件之间数据交换 ■Activity、Service和BroadcastReceiver.之间的数据交互 ■后动Activity和Service 口发送广播消息
5.1 Intent简介 n Intent:一种轻量级的消息传递机制 q Intent:“意图,目的” ,可以理解为不同组件之间通信 的“媒介”“信使” What do you want to do? q 它是一个动作的完整᧿述,包含了动作的产生组件、接 收组件和传递的数据信息 q Intent的目的:用于组件之间数据交换 n Activity、Service和BroadcastReceiver之间的数据交互 n 启动Activity和Service q 发送广播消息
5.1 Intent简介 Intent的优点 口使用Intent来传播动作,利于组件之间的分离,允 许无缝地替换应用程序元素。 0 提供了一个简单的用于扩展应用程序功能的模型的 基础架构
5.1 Intent简介 n Intent的优点 q 使用Intent来传播动作,利于组件之间的分离,允 许无缝地替换应用程序元素。 q 提供了一个简单的用于扩展应用程序功能的模型的 基础架构
5.1 Intent简介 ■5.1.1后动Activity 口应用程序一般都有多个Activity,Intent可以实现不同 Activity之间的切换和数据传递 o后动Activity方式 ■显式启动 ▣必须在Intent中指明启动的Activity所在的类 ·隐式启动 口根据Intent的动作和数据来决定启动哪一个Activity 口选择权由Android系统和最终用户来决定
5.1 Intent简介 n 5.1.1 启动Activity q 应用程序一般都有多个Activity,Intent可以实现不同 Activity之间的切换和数据传递 q 启动Activity方式 n 显式启动 q 必须在Intent中指明启动的Activity所在的类 n 隐式启动 q 根据Intent的动作和数据来决定启动哪一个Activity q 选择权由Android系统和最终用户来决定
5.1 Intent简介 ·不同类型的组件有不同的传递ntent方式: 口激活一个新的Activity,或者让一个现有的Activity做新 的操作,可以通过调用Context.startActivity()或者 Activity.startActivityForResult()方法; 口后动一个新的Service,或者向一个已有的Service传递 新的指令,调用Context..startService()方法或者调用 Context..bindService()方法将调用此方法的上下文对象 与Service绑定;
5.1 Intent简介 n 不同类型的组件有不同的传递Intent方式: q 激活一个新的Activity,或者让一个现有的Activity做新 的操作,可以通过调用Context.startActivity()或者 Activity.startActivityForResult()方法; q 启动一个新的Service,或者向一个已有的Service传递 新的指令,调用Context.startService()方法或者调用 Context.bindService()方法将调用此方法的上下文对象 与Service绑定;
5.1 Intent简介 m不同类型的组件有不同的传递ntent方式: 0 Context.sendBroadcast() Context.sendOrderBroadcast() Context.sendStickBroadcast)这三个方法可以发送 Broadcast Intent。.发送之后,所有已注册的并且拥有 与之相匹配IntentFilter的BroadcastReceiver就会被激 活
5.1 Intent简介 n 不同类型的组件有不同的传递Intent方式: q Context.sendBroadcast()、 Context.sendOrderBroadcast()、 Context.sendStickBroadcast()这三个方法可以发送 Broadcast Intent。发送之后,所有已注册的并且拥有 与之相匹配IntentFilter的BroadcastReceiver就会被激 活
5.1 Intent简介 5.1.1后动Activity 显式启动 ·创建一个Intent ■指定当前的应用程序上下文,以及要启动的Activity ■把创建好的Intent作为参数传递给startActivity()方法 Intentintent new Intent(IntentDemo.this,Activity ToStart.class); 2. startActivity(intent); 主要用于同一个应用程序中的Activity切换。在同一个应用程序 内,一般来说,我们通常都知道要后动的Activity具体是哪一 个,因此常用显式的Intent来实现,简单直接
5.1 Intent简介 n 5.1.1 启动Activity q 显式启动 n 创建一个Intent n 指定当前的应用程序上下文,以及要启动的Activity n 把创建好的Intent作为参数传递给startActivity()方法 n 主要用于同一个应用程序中的Activity切换。在同一个应用程序 内,一般来说,我们通常都知道要启动的 Activity 具体是哪一 个,因此常用显式的 Intent 来实现,简单直接。 1. Intent intent = new Intent(IntentDemo.this, ActivityToStart.class); 2. startActivity(intent);
5.1 Intent简介 ■5.1.1后动Activity 口显式启动 ■指定了component属性的Intent(调用 setComponent(ComponentName)setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的 组件 ■务必在AndroidManifest..xml文件中注册这两个Activity
5.1 Intent简介 n 5.1.1 启动Activity q 显式启动 n 指定了component属性的Intent(调用 setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的 组件 n 务必在AndroidManifest.xml文件中注册这两个Activity