`
yxwang0615
  • 浏览: 562481 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

BoardCast BroadcastReceiver 基础

 
阅读更多

广播及广播接收器

 

1.BroadCast 广播:


使用很简单,实例化一个意图对象,把要发送的信息封装在意图对象中,然后使用


Context。sendBroadCast()方法,把意图对象发送(即广播)出去。


代码示例:

 

 

//用给出的action创建一个意图对象,该action在广播过滤器中要用到
Intent intent  = new Intent("bc1"); 
//要广播的信息
intent.putExtra("val", BroadcastReceiver1.class.getName());
//发送广播
sendBroadcast(intent);

 
 2.BroadCastReceiver广播接收器:

必须建立一个广播接收器来接收广播消息,广播接收器的核心是过滤器IntentFilter。

 

建立广播接收器分为静态建立和动态建立:

 

首先要新建一个广播接收类继承BroadcastReceiver,重写onReceive方法;

 

代码示例,BroadcastReceiver1 .java:

 

 

public class BroadcastReceiver1 extends BroadcastReceiver {

	@Override
	public void onReceive(Context arg0, Intent arg1) {
		String val = arg1.getStringExtra("val");
		Toast.makeText(arg0, "Get message:"+val, Toast.LENGTH_LONG).show();
	}

}
 

 

①如果是静态建立:在清单文件中注册BroadCastReceiver;

 

代码示例,AndroidManifest.xml:

 

 

<receiver android:name=".BroadcastReceiver1">
			<intent-filter >
				<action android:name="bc1"/>
			</intent-filter>
</receiver>
 

 

receiver节点的android:name是广播接收类的类名,intent-filter节点的android:name为要过滤的广播消息,只接受

 

action="bc1"的广播。

 

这样通过sendBoardCast(intent)发送出来的广播,被该广播接收器通过广播过滤器匹配后接收,并通过onReceive()方

 

法处理接收到的信息,完成了整个信息传递的过程。

 

②如果是动态建立,不需要在清单文件中注册BroadCastReceiver,在发送广播的类中实例化一个IntentFiltler的成员变

 

量,并在onStart()方法中注册广播过滤器,在onStop()方法中注销广播过滤器。

 

代码示例:

 

 

public class MainAct extends Activity {
    
	IntentFilter intentFilter = new IntentFilter();
	BroadcastReceiver2 bc2 = new BroadcastReceiver2();
       ......
	
    @Override
    protected void onStart() {
    	super.onStart();
    	intentFilter.addAction("bc2");
    	registerReceiver(bc2, intentFilter);//注册监听
    }
    @Override
    protected void onStop() {
    	super.onStop();
    	unregisterReceiver(bc2); //取消监听
    }
    
}

 

--------------------------------------------------本示例完整代码--------------------------------------------------------------

 

AndroidManifest.xml:

 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.wyx.demo"
      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=".MainAct"
                  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=".BroadcastReceiver1">
			<intent-filter >
				<action android:name="bc1"/>
			</intent-filter>
		</receiver>
    </application>
</manifest>
 

 

MainAct.java:

 

 

/**
 * 该页面负责发送广播信息:
 * 发送广播消息,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,
 * 然后通过调用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,
 * 把 Intent对象以广播方式发送出去。 
 */
public class MainAct extends Activity {
   
	IntentFilter intentFilter = new IntentFilter();
	BroadcastReceiver2 bc2 = new BroadcastReceiver2();
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button btn1 = (Button)findViewById(R.id.btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
		        Intent intent  = new Intent("bc1");
		        intent.putExtra("val", BroadcastReceiver1.class.getName());
		        sendBroadcast(intent);
			}
		});
        
        Button btn2 = (Button)findViewById(R.id.btn2);
        btn2.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent  = new Intent("bc2");
		        intent.putExtra("val", BroadcastReceiver2.class.getName());
		        sendBroadcast(intent);
			}
		});
    }
    
    @Override
    protected void onStart() {
    	super.onStart();
    	intentFilter.addAction("bc2");
    	registerReceiver(bc2, intentFilter);//注册监听
    }
    @Override
    protected void onStop() {
    	super.onStop();
    	unregisterReceiver(bc2); //取消监听
    }
    
}

 

 BroadcastReceiver1.java:

 

 

public class BroadcastReceiver1 extends BroadcastReceiver {

	@Override
	public void onReceive(Context arg0, Intent arg1) {
		String val = arg1.getStringExtra("val");
		Toast.makeText(arg0, "Get message:"+val, Toast.LENGTH_LONG).show();
	}

}
 

 

分享到:
评论

相关推荐

    Android之Broadcast, BroadcastReceiver(广播)

    在Android系统中,Broadcast(广播)是一种非常重要的组件,它使得应用程序之间能够进行无定向的信息传递,即使这些应用并未直接相互交互。BroadcastReceiver(广播接收器)是Android四大组件之一,用于监听并接收...

    Android Broadcast 和 BroadcastReceiver的权限限制方式

    Android Broadcast和BroadcastReceiver的权限限制方式涉及以下几个关键知识点: 1. Android中广播的权限控制主要分为发送权限和接收权限两种。发送权限指的是广播发送者对于特定的接收器发送广播时需要声明的权限。...

    android mars视频代码 Broadcast TestBC源码 BroadcastReceiver

    android mars视频代码 Broadcast TestBC源码 BroadcastReceiver www.mars-droid.com/Android开发视频教程 mars老师讲课 android 视频源码(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    BroadcastReceiver

    BroadcastIntent是BroadcastReceiver与外界交互的桥梁,它包含了广播的类型和附加数据。通过设置Intent的ACTION属性,可以指定广播的类型。例如,ACTION_BATTERY_LOW用于电池电量低的广播,ACTION_BOOT_COMPLETED...

    Android BroadcastReceiver Demo

    在Android系统中,BroadcastReceiver是一种重要的组件,它用于监听并响应系统或应用广播事件。BroadcastReceiver使得应用程序可以在不运行状态下接收并处理系统广播,增强了应用的交互性和响应性。本Demo,"Android ...

    BroadcastReceiver介绍

    ### BroadcastReceiver详细介绍 #### 一、概述 在Android开发中,`BroadcastReceiver`是四大组件之一,主要用于接收并处理系统或应用程序发出的广播消息。通过这种方式,应用之间可以进行简单的通信和交互,使得...

    BroadCastReceiver

    在Android系统中,`BroadcastReceiver`(广播接收者)是一种重要的组件,用于监听并响应系统或应用程序发送的各种广播意图(Intent)。广播是Android系统中的一种全局通知机制,它允许应用程序在不相互依赖的情况下...

    android mars视频代码 Broadcast TestBC2源码 BroadcastReceiver

    android mars视频代码 Broadcast TestBC2源码 BroadcastReceiver www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    BroadcastReceiver学习(01)

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图。BroadcastReceiver允许应用在不运行的情况下接收到消息,从而实现后台通信和事件处理。在这个...

    BroadcastReceiver.rar

    通过以上讲解和提供的示例,你可以深入了解BroadcastReceiver的使用,为开发Android应用打下坚实基础。记得实践是检验真理的唯一标准,动手尝试编写和调试BroadcastReceiver,你会有更深的理解和收获。

    android BroadcastReceiver相关测试代码

    - 使用adb shell am broadcast命令可以手动发送广播,测试BroadcastReceiver的响应情况。 通过分析这两个压缩包中的代码,你可以更深入地理解BroadcastReceiver如何与其他组件交互,以及如何有效地处理各种广播...

    android之旅-Intent和BroadcastReceiver示例代码

    在Android开发中,Intent和BroadcastReceiver是两个至关重要的组件,它们构成了Android系统中不同组件间通信的核心机制。Intent用于在应用程序的不同组件之间传递消息,而BroadcastReceiver则是一种响应这些消息的...

    Android \BroadCastReceiver 简介

    1. 当一个广播 `Intent` 被发送(通常通过 `Context.sendBroadcast()`、`Context.sendOrderedBroadcast()` 或 `Context.send StickyBroadcast()`)时,系统会检查所有已注册的 `BroadcastReceiver`,根据它们的 ...

    Android BroadcastReceiver

    本教程将深入讲解Android BroadcastReceiver的基础知识,以及如何在实际应用中使用。 一、BroadcastReceiver基本概念 BroadcastReceiver允许应用程序接收并处理系统或自定义广播事件。系统广播是由Android系统发出...

    《BroadcastReceiver详解》对应源码

    4. **有序广播和无序广播**:BroadcastReceiver有两种类型的广播,有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)。有序广播按照优先级依次执行,每个Receiver都能接收到前一个Receiver的处理结果...

    broadcastReceiver

    ### 广播接收器(BroadcastReceiver)在Android中的应用与管理 #### 概念 `BroadcastReceiver`作为Android四大组件之一,在系统与应用之间扮演着关键的信息传递角色。不同于Activity等具有用户界面的组件,`...

    Android的BroadcastReceiver简单示例

    Toast.makeText(context, "Broadcast received!", Toast.LENGTH_SHORT).show(); } } } ``` 在`onReceive()`方法中,我们根据接收到的Intent对象来判断并处理广播内容。这里我们假设了一个自定义的ACTION_NAME...

    Android Broadcast 广播机制 实例

    当一个Broadcast被发送时,所有注册了与该Broadcast匹配的BroadcastReceiver(广播接收器)都会收到这个消息,并可以执行相应的处理操作。这种机制使得不同应用程序之间可以相互协作,例如,当手机接收到短信时,...

    BroadcastReceiverDemo.zip

    使用人群:BroadcastReceiver初学者。 里面涉及BroadcastReceiver的静态注册(无序广播)、动态注册(无序广播)、有序广播。 项目对应:https://shuaici.blog.csdn.net/article/details/118337894

    利用广播Broadcast Receiver,在2个不同的Activity传递数据

    通过创建BroadcastReceiver,注册它,发送Broadcast,以及在接收端处理数据,我们可以轻松地在两个不同的Activity之间传递信息。注意,为了优化资源使用,记得在适当的时候注销BroadcastReceiver。

Global site tag (gtag.js) - Google Analytics