您的位置:首页 > 移动开发 > Android开发

android 学习教程六之----四大组件之一——BroadcastReciever

2014-11-10 22:30 288 查看
博客好长时间没有更新了,做个基础总结,继续之前的,温故而知新!该系列为入门篇,大神可以绕道




大家好,今天给大家详解一下Android中的BroadcastReceiver。在Android中,在Android中,Broadcast是一种广

泛运用的在应用程序之间传输信息的机制是一种广泛运用的在应用程序之间传输信息的机制,本质上是一种全局的监

听器,用于监听系统全局的广播消息。

BroadcastReceiver
有两种注册方式:一:静态注册方式 ;二:动态注册方式



一:静态注册方式就是在Anroidmanifest.xml中配置


例子:

<receiver android:name="MyReceiver" >

<intent-filter>

<action android:name="android.intent.myfirstbroadcast" />

</intent-filter>

</receiver>

发送Activity 关键代码如下:

String actionName = "android.intent.myfirstbroadcast"; //定义一个Action

Intent broadcastIntent = new Intent(actionName);

sendBroadcast(broadcastIntent); //发送广播

接受消息广播类需要继承BroadcastReceiver
如实例 MyReceiver:关键代码如下:

public class MyReceiver extends BroadcastReceiver{

public void onReceive(Context arg0, Intent arg1) {

// TODO Auto-generated method stub

Toast toast = Toast.makeText(context, "接受到的广播消为"+intent.getAction, Toast.LENGTH_SHORT);

toast.show();

}



二:动态注册方式:注册这样的事件由应用自己处理,通常是在onResume事件中通过registerReceiver进行注册,

在onPause等事件中通过unregisterReceiver取消注册。通过这样的注册方式使其能过在运行期间保持对事件的关注。

protected void onResume() {

super.onResume();

System.out.println("====onResume=====");

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction("android.intent.myfirstbroadcast");

MyReceiver myfisrtreceiver =new MyReceiver();//定义receiver对象

registerReceiver(myfirstreceiver, intentFilter); //注册

}

protected void onPause() {

super.onPause();

System.out.println("====onPause====");

unregisterReceiver(myfistreceiver); //在onPause中反注册

}

对应广播消息接受类MyReceiver :

public MyReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

Toast toast = Toast.makeText(context, "发送动态注册广播", Toast.LENGTH_SHORT);

toast.show();

}



};

两种注册方式已讲完,关于深入理解广播机制,请查看罗升阳的广播注册监听机制源码剖析,这里主要是入门讲解。



context 提供了两种方式用于发送广播:

sendBroadcast :用于发送正常的Broadcast

sendOrderedBroadcast :用于发送有序的Bradcast .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: