`
Jack22
  • 浏览: 133614 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Broadcast简介

 
阅读更多

在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。下面将详细的阐述如何发送Broadcast和使用BroadcastReceiver过 
滤接收的过程: 
    首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。 
    当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若 匹配则就会调用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要 实现onReceive()方法。 
注册BroadcastReceiver有两种方式: 
    一种方式是,静态的在AndroidManifest.xml中用<receiver>标签生命注册,并在标签内用<intent- filter>标签设置过滤器。 
    另一种方式是,动态的在代码中先定义并设置好一个 IntentFilter对象,然后在需要注册的地方调 Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果用动 态方式注册的BroadcastReceiver的Context对象被销毁时,BroadcastReceiver也就自动取消注册了。 
    另外,若在使用sendBroadcast()的方法是指定了接收权限,则只有在AndroidManifest.xml中用<uses- permission>标签声明了拥有此权限的BroascastReceiver才会有可能接收到发送来的Broadcast。 
    同样,若在注册BroadcastReceiver时指定了可接收的Broadcast的权限,则只有在包内的AndroidManifest.xml中 用<uses-permission>标签声明了,拥有此权限的Context对象所发送的Broadcast才能被这个 BroadcastReceiver所接收。 
动态注册: 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(String);--为 BroadcastReceiver指定action,使之用于接收同action的广播 registerReceiver(BroadcastReceiver,intentFilter); 
    一般:在onStart中注册,onStop中取消unregisterReceiver 
发送广播消息:extends Service 
    指定广播目标Action:Intent Intent = new Intent(action-String) 
    --指定了此action的receiver会接收此广播 
    需传递参数(可选) putExtra(); 
    发送:sendBroadcast(Intent);

在BroadcastReceiver配置里intent-filter:action //用于标示接收什么样的action

在Activity要广播的地方设置Intent.setAction();sendBroadcast(in);
也可以在其中动态注册BroadcastReceiver

BroadcastReceiver生命周期:
只是在其onReceiver方法执行的时候才是active;inactive状态下其随时会被系统回收
在onReceiver里执行很耗时的工作时应该开启一个独立的线程。但是一旦onReceiver返回后(不管新线程有没有执行完),
系统都会认为这些资源处于inactive。
也不能bindService。道理同线程
解决方案是在onReceiver里startService,让service完成工作

在BroadcastReceiver配置里intent-filter:action //用于标示接收什么样的action

在Activity要广播的地方设置Intent.setAction();sendBroadcast(in);
也可以在其中动态注册BroadcastReceiver。

1.创建Broadcast,首先要有部件发送Broadcast,发送Broadcast的代码如下

        Intent intent1 = new Intent(AC1);//AC1为reciver的动作名称。

        sendBroadcast(intent1);

此处的AC1要定义:

 

static final String AC1 = "com.test.action.NEW_BC1";


2.定义Broadcast的动作:

注意:定义中的"com.test.action.NEW_BC1"是要在Menifest.xml文件中定义的,如下所示:

 

<receiver android:name="TestRC">

        <intent-filter>

        <action

        android:name="com.test.action.NEW_BC1"/>     

        </intent-filter>           

</receiver>

3.定义BroadcastReciver对象

 

其中android:name="TestRC"的意思是:该BroadcastReciver对象的名字是TestRC,这个对象接受动作为com.test.action.NEW_BC1 的Broadcast,其定义如下:

 


 

 

public class TestRC extends BroadcastReceiver {

    public static int NOTIFICATION_ID = 21321;

    Context context;

    @Override

    public void onReceive(Context context, Intent intent) {

       this.context = context;

       Toast.makeText(context, "widget已启动", 0);

       showNotification(); 

    }

    private void showNotification(){

       NotificationManager notificationManager = (NotificationManager) context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);

       Notification notification = new Notification(R.drawable.icon, "bc1",   System.currentTimeMillis());

 

       PendingIntent contentItent = PendingIntent.getActivity(context, 0, new Intent(context, Main.class), 0); //Main.class为Broadcast的发出对象

       notification.setLatestEventInfo(context, "在bc1中", null, contentItent);

       notificationManager.notify(NOTIFICATION_ID, notification);

  }

}

 

分享到:
评论

相关推荐

    Android程序设计-Broadcast.pptx

    ### 01 Broadcast简介 **普通广播** 是BroadcastReceiver的基本形式,通过`Context.sendBroadcast()`方法发送。这些广播是异步的,意味着它们同时传递给所有注册的接收者,而且执行速度非常快。然而,由于接收者的...

    Android Broadcast 广播机制 实例

    一、Broadcast机制简介 Broadcast广播是Android系统中的一种全局通知机制,用于在整个系统中传播事件。当一个Broadcast被发送时,所有注册了与该Broadcast匹配的BroadcastReceiver(广播接收器)都会收到这个消息,...

    BroadcastDemo

    6. `README.md`: 这通常是一个Markdown格式的文件,包含了项目简介、安装指南、使用方法等信息,对理解项目很有帮助。 7. `gradle.properties`: 这个文件存储了Gradle构建的全局属性,如版本号和代理设置。 8. `...

    android的Broadcast Receiver应用机制

    ### Android的Broadcast Receiver应用机制 #### 一、BroadcastReceiver简介 在Android开发中,四大核心组件包括:Activity、Service、BroadcastReceiver以及Content Provider。其中,BroadcastReceiver是一种特殊...

    Multilevel uTESLA broadcast authentication for distributed sensor networks

    #### uTESLA简介与挑战 uTESLA是一种轻量级的广播认证协议,最初设计用于分布式传感器网络。然而,由于其参数初始化依赖于单播通信方式,这限制了其在网络规模较大时的应用能力。尤其是在大规模部署的情况下,单播...

    BroadcastClient

    【BroadcastClient】是一个关于Android广播(Broadcast)的学习Demo,它主要展示了如何在Android应用程序中使用BroadcastReceiver进行消息传递和接收。BroadcastReceiver是Android系统中一个关键的组件,它允许应用...

    adb发送广播

    1. **ADB简介** ADB是Android开发的核心部分,它提供了与Android设备交互的命令行接口。通过ADB,开发者可以安装应用、查看设备状态、执行shell命令以及发送各种类型的数据,包括广播。 2. **发送广播的命令格式**...

    Broadcast/multicast delivery integration in B5G/6G environments

    本研究探讨了如何将广播(Broadcast)与组播(Multicast)技术有效地整合到后5G(Beyond 5G,简称B5G)以及6G网络环境中。随着移动通信技术的不断发展,从5G向更高版本演进的过程中,广播和组播技术的应用成为提高...

    Android四大组件之Broadcast Receiver

    文章目录Android四大组件之Broadcast Receiver概述广播接收器(Broadcast Receiver)Broadcast Receiver简介Broadcast Receiver的注册一. 静态注册二. 动态注册三. 本地广播发送Broadcast Receiver广播的三种发送...

    SMPTE ST 2021-1:2017 Broadcast Exchange Format(BXF) - Requiremen

    SMPTE ST 2021-1 是一个重要的标准,它定义了2017年版的广播交换格式(Broadcast Exchange Format, BXF),旨在促进媒体和娱乐行业中不同系统之间的元数据交换。该标准是SMPTE(电影与电视工程师协会)制定的一系列...

    UMTS_LTE_MultimediaBroadcast_multicastService

    ### UMTS与LTE简介 UMTS(Universal Mobile Telecommunications System,通用移动通信系统)是继GSM之后的第二代移动通信技术标准,主要提供高速数据传输服务。而LTE(Long Term Evolution,长期演进)则是在UMTS...

    BroadcastReceiver介绍

    Intent broadcastIntent = new Intent("android.intent.action.MY_BROADCAST"); broadcastIntent.putExtra("msg", "Hello from sender"); sendBroadcast(broadcastIntent); ``` #### 五、注意事项 - **权限...

    android 框架及开发简介

    Android框架包括了一系列关键组件,如Activity、Service、Broadcast Receiver和Content Provider,它们共同构成了Android应用的基础架构。 Activity是Android中的可视化用户界面,每个具有用户界面的应用至少包含一...

    如何阻止Windows进入休眠状态?

    #### WM_POWERBROADCAST消息简介 `WM_POWERBROADCAST`是Windows系统发送的一种消息类型,当电源管理模块发生特定事件时,该消息会被发送到所有已注册接收此消息的应用程序窗口。通过监听这个消息,我们可以检测到...

    Android \BroadCastReceiver 简介

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

    Android广播简介.zip

    在Android系统中,广播(Broadcast)是一种非常重要的组件,它使得应用程序之间能够相互通信,即使这些应用在后台运行或者完全未启动。Android广播分为两种主要类型:有序广播(Ordered Broadcast)和无序广播...

    初学者:Android 简介 PPT

    **Android简介** Android是一种开源的、基于Linux内核的操作系统,主要应用于移动设备,如智能手机和平板电脑。自2008年首次发布以来,它已经发展成为全球最广泛使用的移动操作系统之一,由Google公司领导的开放...

    Gennum广播视频产品简介

    在Gennum的产品线中,"Broadcast VideoSpring 2010 Product Guide"详细介绍了他们的一系列产品,包括以下几个关键领域: 1. **Equalizers**:这些设备用于补偿长距离传输后SDI信号可能出现的衰减和失真,确保信号的...

    Neutron与Nova的网络逻辑关系---Nova节点网络逻辑关系(一)

    #### 二、Linux Bridge简介 Linux Bridge是Linux内核中的一个虚拟网络设备,它可以模拟出一个物理交换机的功能,用于连接不同的虚拟网络接口。在OpenStack中,Linux Bridge常被用来创建虚拟局域网(VLAN),实现不同...

    细细品味Hadoop_第16期_ZooKeeper简介及安装_V1.2

    ZooKeeper的核心要点包括一致性协议Zab(ZooKeeper Atomic Broadcast),它是一种用于实现ZooKeeper服务一致性的协议。Zab协议确保了ZooKeeper状态机的一致性,并支持崩溃恢复。ZooKeeper还利用了数据复制,以保证...

Global site tag (gtag.js) - Google Analytics