BroadcastReceiver 详解

BroadcastReceiver详解代码 自己写的一个BroadcastReceiver的小例子,分两种注册方式去讲解。 立即下载

一、

     广播机制简介

     广播主要分为两种 :  一种是标准广播,另一种是有序广播   

      1、标准广播

           标准广播是一种完全异步的的执行广播,在广播发送后所有的广播接收器几乎同一时间接收到这条广播


      2、有序广播

          有序广播顾名思义,是有顺序的,有优先级的区分,当发送广播时优先级高的广播接收器先接收到广播,并且可以截断发送的信息,不让后面的广播接收器接收到,等第一个接收完成然后,再发送优先级低的广播接收器


二、

      广播的注册方式

      广播注册一般有两种 : 动态注册、静态注册

      1、动态注册就是在我们的代码中进行注册:

     

package com.example.root.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private SimpleReceiver receiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //过滤器
        IntentFilter filter = new IntentFilter();
        filter.addAction("simple");
        //广播
        receiver = new SimpleReceiver();
        //动态注册广播
        registerReceiver(receiver, filter);

/************************注册完成****************************/

        //给广播发送消息
        Intent intent = new Intent();
        intent.setAction("simple");
        sendBroadcast(intent);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //重点:记得要注销广播
        unregisterReceiver(receiver);
    }

    class SimpleReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "*************", Toast.LENGTH_LONG).show();
        }
    }
}


   2、静态注册就是在我们的Mainfest里面进行注册

       2.1、首先是先创建我们的广播:

      

package com.example.root.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class SimpleReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "*******////******", Toast.LENGTH_LONG).show();
    }
}


   2.2、在mainfest里面进行注册

    

   现在已经注册完成!

   2.3、下面就给我们的广播发送信息吧

      

//给广播发送消息
        Intent intent = new Intent();
        intent.setAction("mainfestReceiver");
        sendBroadcast(intent);
  

   2.4、OK接收成功!

下面给大家说一下action这个是根据自己的需求来进行监听的,举个栗子:你如果需要监听系统网络的话  就需要修改action :  android.net.conn.CONNECTIVITY_CHANGE 注意要加网络权限


三、

    1、 给大家再说一个广播的一些属性:

         Exported : 表示你 是否允许这个广播接收本程序以外的广播

         Enable : 表示是否启用这个广播

         Priority : 给广播设置优先级

    2、广播是一种可以跨进程的通信方式,在前面的学习中都可以看出来,所以我们应用程序内部发出的广播也是可以被其他程序接收,为了证实大家可以修改一下工程的包名以及Toast吐出来的信息,然后再次安装到手机上 现在就在我们的手机上看到两次不同的信息

   

    3、前面给大家提到有序广播我们就把前面发送的方式修改一下   sendBroadcast(intent)修改为sendOrderedBroadcast(intent,null);  但是这样的话大家会发现没有什么区别,不要忘了这个时候的广播接收器是有先后顺序的,大家现在就可以用到我们说到的属性 Priority 设置优先级 当然我们之前也说到截断这个时 我们就把优先级设置为100,保证一定个可以接收到广播

    4、截断我们可以在onReceive里面调用abortBroadcast进行广播的截断 ,这个时候优先级低的就会接收不到广播信息

 *****************a:发发牢骚******a:好下面给大家介绍一下本地广播************************s :还有,我都方啦!!打他!!!!!*******************************************************

四、

      使用本地广播

      介绍 : 为什么要用本地广播大家想一下如果所有的广播都像前面的进程只要动作一样是不是都要乱了  比如小广告,是不是很恶心.....

      其实本地广播非常简单当然其他的广播是接收不到的 直接上代码:

package com.example.root.myapplications;

import android.content.Intent;
import android.content.IntentFilter;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private SimpleReceiver receiver;
    private LocalBroadcastManager localBroadcastinStance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //本地广播管理器
        localBroadcastinStance = LocalBroadcastManager.getInstance(getApplicationContext());
        //过滤器
        IntentFilter filter = new IntentFilter();
        filter.addAction("simple");
        //广播
        receiver = new SimpleReceiver();
        //动态注册广播
        localBroadcastinStance.registerReceiver(receiver, filter);

/************************注册完成****************************/

        //给广播发送消息
        Intent intent = new Intent();
        intent.setAction("mainfestReceiver");
        localBroadcastinStance.sendBroadcast(intent);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //重点:记得要注销广播
        localBroadcastinStance.unregisterReceiver(receiver);
    }

}


author :  如果大家有不同意见的希望给出建议,不懂的也可以提问我会在第一时间给出自己的想法和答案,虽然没有大神们写的那么高大尚,但也希望自己也能够共享自己的微薄之力!

《BroadcastReceiver详解》对应源码 博客《BroadcastReceiver详解》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/38710901 立即下载

相关推荐

android之BroadcastReceiver应用详解

主要介绍了android之BroadcastReceiver应用详解,BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。有兴趣的可以了解一下。

Android之 BroadcastReceiver广播接收器详解

broadcast receiver广播接收器详解

qq_29848853的博客 1万+

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models

大型语言模型(LLM)被认为是推进智能教育的一项关键技术,因为它们展示了深入理解教学场景和为学生提供个性化指导的潜力。然而,当前个性化教学中基于LLM的应用主要遵循“问答”范式,学生被动地获得答案和解释。在本文中,我们提出了苏格拉底式教学模式(SocraticLM ),它实现了一种苏格拉底式的“发人深省”的教学范式,实现了真正的课堂教师的角色,让学生积极参与到真正掌握解决问题所需的思考过程中。

weixin_43961909的博客 2883

broadcastreceiver全面详解

目录     1. 定义 即 广播,是一个全局的监听器,属于Android四大组件之一 Android 广播分为两个角色:广播发送者、广播接收者 2. 作用 监听 / 接收 应用 App 发出的广播消息,并 做出响应 3. 应用场景 Android不同组件间的通信(含 :应用内 / 不同应用之间) 多线程通信 与 Android 系统在特定情况下的通信 如:电话呼入时...

zyz18813049204的博客 4510

原神真端,原神服务端,虚拟机启动部署傻瓜式教学

没玩过抽卡 游戏想体验一下抽卡的感觉,听说原神有真端了,所以弄一个局域网的服务体验一下,这里要感谢一些服务端的分享者。

azyouyouyou的博客 1万+

HDMI2.1/eDP TX接口设计:

HDMI2.1向下兼容,HDMI2.1工作在FRL模式,HDMI2.0工作在TMDS模式。因此采用AC耦合电压模式驱动器。一般采用220nF,封装建议0201。,但是协议要求,往 CEC 管脚通过 27K 电阻加 3.3V 电压,漏电不允许超过。NOTE:如果只需要支持 HDMI2.0 及以下模式时, MOS管也不能省掉。DDC_SCL/DDC_SDA 协议规定是。HDMI2.0模式:配置为高,MOS导通。HDMI2.1模式:配置为低,MOS不导通。,必须增加电平转换电路。形成直流偏置,大约3V。

qq_40010777的博客 7857

BroadCast Receiver(广播)详解

BroadCastReceiver是四大组件之一,是一个全局的监听器BroadCastReceiver有两大功能,广播发送者,广播接收者BroadCastReceiver分为静态广播和动态动态广播。

suiyue010211的博客 8405

ANSYS 2022R2 安装教程:系统准备、许可证配置与故障排查

ANSYS 是面向工程仿真的多物理场商业软件平台,其安装远非普通应用软件的图形化向导流程,而涉及操作系统版本、运行库精确版本、硬件虚拟化支持、许可证服务架构等系统级配置。理解 ANSYS License Manager 的服务机制与端口依赖、掌握 Visual C++ 和 .NET Framework 的启用逻辑,是保障 Fluent、Mechanical、HFSS 等求解器稳定调用的基础。该技术栈广泛应用于高校教学、航空航天结构分析、电子设备电磁兼容仿真等场景。本指南聚焦 ANSYS 2022R2 版本在

weixin_28559803的博客 597

【Android移动开发】BroadcastReceiver详解

在Android中,广播是一种广泛运用在应用程序之间传输信息的机制,广播的内容是一个Intent,这个Intent可以携带要发送的数据。

Pluton_的博客 1401

带有验证码的爆破(包含Burp suite工具爆破)

关于含有验证码爆破的一些总结!

weixin_43960066的博客 8693

2022中山大学计算机技术专硕考研初试、复试经验帖

个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧。可以帮助节省时间! 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 机试 笔试 面试 关于选导师 个人感言

zik的博客 1万+

BroadcastReceiver详解

一、简介1. 定义广播接收器是一个用于接收广播信息,并做出对应处理的组件。比如我们常见的系统广播:通知时区改变、电量低、用户改变了语言选项等。2. 用途广播可以进行数据的传递、通知,类似于观察者模式。开发中我们可以通过继承BroadcastReceiver基类来自定义广播,接收某些我们感兴趣的广播来实现业务需求。二、类型1、无序广播只发送广播到优先级较高的接收者那里,然后由优先级高的接收者决定是继...

hejinhbue的博客 1万+

【QNX Hypervisor 2.2 用户手册】2.6 处理qvm终止

你可以注册通知,以在qvm进程实例退出时得到通知。这样你就可以采取相应的措施来响应这种终止事件。

从0到1,突破自己 1106

BroadcastReceiver详解以及应用

使用Android手机的时候,我们的手机管家中经常会出现开机自启动某某app,那么对于这个某某APP来说,他是怎么知道系统什么时候开机的呢?还有,系统短信怎么知道收到了短信?以及屏幕点亮与关闭、应用卸载与安装等等。这就讲到了Android四大组件之一:BroadcastReceiver,翻译是广播接收者。意思就是接收广播用的。他可以接收到系统开机完成的广播,以及系统电量不足的广播,以及系统收到短信的

灰太狼的博客 1万+

SecOC专题之新鲜值TripCnt

本系列为一步步拆解新鲜值的分发及管理而撰写文章属于原创,根据自身开发经验及理解撰写,若有错误请指出Trip Counter是新鲜值中变化最慢的一个part,并且自增到最大值时,会从头开始翻转计数。Trip Counter需要收发双方都保存,由于其变化较慢,所以不会经常进行同步该值。这就要求开发过程中保证每次对该值的读写必须要正确。

qq_22969363的博客 1154

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android-BroadcastReceiver详解

BroadcastReceiver详解BroadcastReceiver简介BroadcastReceiver简单实现以及参数详解 BroadcastReceiver简介 顾名思义,BroadcastReceiver就是广播接收器,属于Android四大组件之一。用于接收程序(系统内部的程序以及用户开发的程序)发出的Broadcast Intent来做出相应的操作。设置BroadcastReceiver需要两步: 创建需要启动的BroadcastReceiver的Intent。 使用sendBroadca

weixin_44059750的博客 1594

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

详解 Android 中 BroadcastReceiver

注意,使用sendOrderedBroadcast方法发送有序广播时,需要一个权限参数,如果为null则表示不要求接收者声明指定的权限,如果不为null,则表示接收者若要接收此广播,需声明指定权限。这样做是从安全角度考虑的,例如系统的短信就是有序广播的形式,一个应用可能是具有拦截垃圾短信的功能,当短信到来时它可以先接受到短信广播,必要时终止广播传递,这样的软件就必须声明接收短信的权限。注意,这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyReceiver也会被系统调用而自动运行。

2401_83817603的博客 1151

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BroadCastReceiver详解

BroadCastReceiver 简介 (末尾有源码) BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastReceiver.java   广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 Context.sendBr

jiangliloveyou的专栏 913

BroadcastReceiver使用详解

BroadcastReceiver简介 BroadcastReceiver翻译来就是广播接收器。实质上他就是一个全局的广播监听器。用于监听系统以及自定义的广播等,比如电池电量的改变。BroadcastReceiver的使用步骤 创建BroadcastReceiver sendBroadCast()或sendOrderedBroadcast() 我们平时所给按钮设置的onClickListener(

Z_DingHao的博客 1183

Android BroadcastReceiver详解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34356310的博客 142

Android中BroadCastReceiver详解

BroadcastReceiver的解释BroadcastReceiver也就是“广播接收者”的意思,它是用来接收来自系统和应用中的广播。  在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。下面将详细的阐述如何发送Broadcast和使用BroadcastRecei

徐刘根的博客 4604
上一篇: RecyclerView的简单使用
下一篇: 数据存储--------详解持久化技术
有志青年L
博客等级 码龄10年 30粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值