第6章 组件通信与广播消息
本章学习目标
了解使用Intent进行组件通信的原理
掌握使用Intent启动Activity的方法
掌握获取Activity返回值的方法
掌握发送和接收广播消息的方法
Int(什么应用场景?)
程序开发人员可以将浏览动作和Web地址作为参数传递给Intent,Android系统则通过匹配动作和数据格式,找到最适合于此动作和数据格式的组件。
Intent简介
启动Activity
隐式启动
,数据是Web地址,(urlString)方法,可以简单的把一个字符串解释成Uri对象。Android系统在匹配Intent时,,得知需要启动具备浏览功能的Activity,但具体是浏览电话号码还是浏览网页,还需要根据URI的数据类型来做最后判断。因为数据提供的是Web地址"",所以最终可以判定Intent需要启动具有网页浏览功能的Activity。在缺省情况下,Android系统会调用内置的Web浏览器。
Intent简介
启动Activity
隐式启动
Intent的语法如下:
Intent简介
启动Activity
隐式启动
Intent构造函数的第1个参数是Intent需要执行的动作,Android系统支持的常见动作字符串常量可以参考表。第2个参数是URI,表示需要传递的数据。
Intent简介
启动Activity
隐式启动
WebViewIntentDemo示例说明了如何隐式启动Activity,用户界面
Intent简介
启动Activity
隐式启动
当用户在文本框中输入Web地址后,通过点击“浏览此URL”按钮,程序根据用户输入的Web地址生成一个Intent,并以隐式启动的方式调用Android内置的Web浏览器,并打开指定的Web页面。本例输入的Web地址,打开页面后的效果如图
广播消息
广播消息
Intent的另一种用途是发送广播消息,应用程序和Android系统都可以使用Intent发送广播消息,广播消息的内容可以与应用程序密切相关的数据信息,也可以Android的系统信息,例如网络连接变化、电池电量变化、接收到短信或系统设置变化等。
如果应用程序注册了BroadcastReceiver,则可以接收到指定的广播消息。
使用Intent发送广播消息非常简单,只需创建一个Intent,并调用sendBroadcast()函数就可把Intent携带的信息广播出去。
但需要注意的是,在构造Intent时必须定义一个全局唯一的字符串,用来标识其要执行的动作,通常使用应用程序包的名称。
如果要在Intent传递额外数据,可以用Intent的putExtra()方法。下面的代码构造用于广播消息的Intent,并添加了额外的数据,然后调用sendBroadcast()发送广播消息:
广播消息
sendBroadcast()代码
BroadcastReceiver用于监听广播消息,,并使用Intent过滤器指定要处理的广播消息。
广播消息
onReceive()方法
创建BroadcastReceiver需继承BroadcastReceiver类,并重载onReceive()方法。示例代码如下:
当Android系统接收到与注册BroadcastReceiver匹配的广播消息时,Android系统会自动调用这个BroadcastReceiver接收广播消息。
在BroadcastReceiver接收到与之匹配的广播消息后,onReceive()方法会被调用(事件处理函数),但onReceive()方法必须要在5秒钟执行完毕,否则Android系统会认为该组件失去响应,并提示用户强行关闭该组件。
广播消息
BroadcastReceiverDemo示例
BroadcastReceiverDemo示例说明了如何在应用程序中注册BroadcastReceiver组件,并指定接收广播消息的类型。
BroadcastReceiverDemo示例的界面如图所示,在点击“发生广播消息”按钮后,EditText控件中内容将以广播消息的形式发生出去
示例内部的Broadcast
组件通信与广播消息 来自淘豆网m.daumloan.com转载请标明出处.