Android深入浅出系列之广播机制—1-Android中的广播机制
2011-12-15 16:32
537 查看
阅读目录
一:什么是BroadcastReceiver?
二:布局文件编写
三:代码文件编写
四:项目定义文件编写
五:运行效果
一:什么是BroadcastReceiver?
在现实生活中,当我们开车的时候,会听到交通台从广播里说“朝内大街拥堵”,如从这里通过的车辆请绕行,这就是广播,交通台是发送方,我们个人是接收方,至于我们到底在没在听交通台,我们也许在听郭德纲的相声,又或者我们虽听了交通台,要不要再走朝内大街是我们自己的事情了,所以在Android中也是一样的,广播只管发送数据,至于怎么接收数据和怎么处理数据就是接收方的事情了。
对于我们来说,我们首先需要把广播接收器的类注册到Android的操作系统上面,让Android的操作系统知道,现在有一个广播接收器正在等待接收Android系统的广播了,当Android的操作系统产生一个事件的时候,比如说接到电话,Android操作系就会通知所有注册在它上面的BroadcastReceiver对象告诉它们产生了一个事件,是个什么样子的事件,这些BroadcastReceiver对象首先判断这个事件是不是我们这个接收器感兴趣的事件,不同的BroadcastReceiver对象可能处理不同的事件,如果是我需要或者感兴趣的事件,我在进行处理。
二:布局文件编写
main.xml
三:代码文件编写
3.1:MainActivity.java
3.2 BroadcastReceiver.java
这个类是继承自BroadcastReceiver的一个类,这个类的作用就是处理Android操作系统发出的广播事件。也就是说Android操作系统发出一个事件的广播,我们这个类负责接收,接收到之后就会调用onReceive()方法。
这个BroadcastReceiver对象的生命周期什么时候结束呢?onReceive()方法被调用完毕,这个BroadcastReceiver对象就结束了,下次再接收广播在生成新的BroadcastReceiver对象。
四:项目定义文件编写
AndroidMainfest.xml
要想让BroadcastReceiver类能够接收到Android操作系统所发送的事件,就得把BroadcastReceiver类注册到Android的操作系统上,就需要这部分红色代码了,<intent-filter/>节点就是决定这个BroadcastReceiver类应该接收什么样类型的事件,<intent-filter/>是过滤器的意思,符合标准就让你通过,不符合标准就不让你通过,也就是说我们要通知一个广播接收器BroadcastReceiver需要发送Intent对象,如果Intent对象的ACTION符合<action android:name="android.intent.action.CALL" />就会启动这个BroadcastReceiver。这个节点是我们的广播接收器接收什么事件就是在这里来定义的。
五:运行效果
一:什么是BroadcastReceiver?
二:布局文件编写
三:代码文件编写
四:项目定义文件编写
五:运行效果
一:什么是BroadcastReceiver?
在现实生活中,当我们开车的时候,会听到交通台从广播里说“朝内大街拥堵”,如从这里通过的车辆请绕行,这就是广播,交通台是发送方,我们个人是接收方,至于我们到底在没在听交通台,我们也许在听郭德纲的相声,又或者我们虽听了交通台,要不要再走朝内大街是我们自己的事情了,所以在Android中也是一样的,广播只管发送数据,至于怎么接收数据和怎么处理数据就是接收方的事情了。
对于我们来说,我们首先需要把广播接收器的类注册到Android的操作系统上面,让Android的操作系统知道,现在有一个广播接收器正在等待接收Android系统的广播了,当Android的操作系统产生一个事件的时候,比如说接到电话,Android操作系就会通知所有注册在它上面的BroadcastReceiver对象告诉它们产生了一个事件,是个什么样子的事件,这些BroadcastReceiver对象首先判断这个事件是不是我们这个接收器感兴趣的事件,不同的BroadcastReceiver对象可能处理不同的事件,如果是我需要或者感兴趣的事件,我在进行处理。
二:布局文件编写
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" 9 android:text="发送广播" android:id="@+id/br"/> 11</LinearLayout>
三:代码文件编写
3.1:MainActivity.java
package com.menglin.broadcastreceiver; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { //声明一个Button对象btn private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局文件main.xml setContentView(R.layout.main); btn = (Button)findViewById(R.id.br); //给按钮绑定监听单击事件 btn.setOnClickListener(listener); } //监听单击事件 private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { //创建一个新的Intent对象 Intent intent = new Intent(); //设置Intent对象的动作为拨打电话 intent.setAction(Intent.ACTION_CALL); //发送广播 sendBroadcast(intent); } }; }
3.2 BroadcastReceiver.java
这个类是继承自BroadcastReceiver的一个类,这个类的作用就是处理Android操作系统发出的广播事件。也就是说Android操作系统发出一个事件的广播,我们这个类负责接收,接收到之后就会调用onReceive()方法。
这个BroadcastReceiver对象的生命周期什么时候结束呢?onReceive()方法被调用完毕,这个BroadcastReceiver对象就结束了,下次再接收广播在生成新的BroadcastReceiver对象。
package com.menglin.broadcastreceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class BroadcastReceiver extends android.content.BroadcastReceiver { private static final String Tag = "BroadcastReceiver"; //构造函数 public BroadcastReceiver() { Log.i(Tag, "构造函数"); } //覆写onReceive()方法 public void onReceive(Context context, Intent intent) { Log.i(Tag, "已接收"); } }
四:项目定义文件编写
AndroidMainfest.xml
要想让BroadcastReceiver类能够接收到Android操作系统所发送的事件,就得把BroadcastReceiver类注册到Android的操作系统上,就需要这部分红色代码了,<intent-filter/>节点就是决定这个BroadcastReceiver类应该接收什么样类型的事件,<intent-filter/>是过滤器的意思,符合标准就让你通过,不符合标准就不让你通过,也就是说我们要通知一个广播接收器BroadcastReceiver需要发送Intent对象,如果Intent对象的ACTION符合<action android:name="android.intent.action.CALL" />就会启动这个BroadcastReceiver。这个节点是我们的广播接收器接收什么事件就是在这里来定义的。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.menglin.broadcastreceiver" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".BroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.CALL" /> </intent-filter> </receiver> </application> </manifest>
五:运行效果
相关文章推荐
- Android深入浅出系列之广播机制—1-Android中的广播机制
- Android深入浅出系列之广播机制—2-Android中的广播机制
- Android深入浅出系列之广播机制—2-Android中的广播机制
- Android深入浅出系列之广播机制—2-Android中的广播机制
- Android深入浅出系列之广播机制—Android中的广播机制(一)
- Android深入浅出系列之广播机制—Android中的广播机制(二)
- Android广播发送机制剖析【android广播系列二】
- Android深入浅出系列之服务机制—1-Android中的Service
- Android深入浅出系列之服务机制—1-Android中的Service
- Android总结篇系列:Android广播机制
- Android广播注册机制剖析【android广播系列一】
- Android深入浅出系列之服务机制—1.Android中的Service
- Android总结篇系列:Android广播机制
- Android深入浅出系列之服务机制—1.Android中的Service
- Android源码解析系列第(三)篇---深入了解Android的消息机制
- Android 广播机制
- 【Android开发】线程间通讯机制(提高篇)——深入浅出实现原理
- Android官方开发文档Training系列课程中文版:电池续航时间优化之按需开启广播接收器
- Android学习之广播机制(1)
- Android深入浅出之Binder机制