iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android四大组件之Broadcast Receiver
  • 643
分享到

Android四大组件之Broadcast Receiver

Android 2022-06-06 13:06:07 643人浏览 安东尼
摘要

Android四大组件之Broadcast Receiver 作者:白璐 日期:2020/2/23 文章目录Android四大组件之Broadc

Android四大组件之Broadcast Receiver

作者:白璐
日期:2020/2/23

文章目录Android四大组件之Broadcast Receiver概述广播接收器(Broadcast Receiver)Broadcast Receiver简介Broadcast Receiver的注册一. 静态注册二. 动态注册三. 本地广播发送Broadcast Receiver广播的三种发送方式常用的系统广播的action 和permission使用注意事项拓展学习1. Service组件和BroadcastReceiver实现组件通信2. 自定义私有权限 概述

Android应用程序是由下列4个组件构成,分别是:

活动程序(Activity) 服务程序(Service) 广播接收器(Broadcast Receiver) 内容提供器(Content Provider) 广播接收器(Broadcast Receiver) Broadcast Receiver简介

BroadCastReceiver是Android的四大组件之一,主要功能就是发送消息,监听消息,然后根据业务进行逻辑处理,可以在应用内部,也可以是应用之间使用。从应用内部的消息,数据传递这个功能来说,现如今有很多开源框架可以实现,比如EventBus 或者使用观察者模式自定义封装一个消息发送机制,也都挺好用的。

Broadcast Receiver的注册 一. 静态注册 写一个广播集成BroadcastReceiver
public class MyReceiver1 extends BroadcastReceiver {
    public static final String ACTION1="com.example.liukang.mybroadcastprojrct.test";
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent!=null){
            String r1 = intent.getStringExtra("MyReceiver1");
            Toast.makeText(context,"我接收到了"+r1,Toast.LENGTH_LONG).show();
            Log.e("TAG",r1);
            //abortBroadcast();  有序广播时候,优先级高的可以接收,进行判断处理是否往下传递
        }
    }
}
在清单文件中注册一下:
//是否能接收其他APP发送的消息
    //有序广播优先级使用,越大越高
发送广播:
Intent intent = new Intent();
intent.setAction("ACTION_RECEIVER");  //一定对应
intent.addCateGory("category");   //不写即是默认 可以匹配;但是写了,那么清单文件MyReceiver1注册的必须得有,否则不通过
intent.setComponent(new ComponentName("com.example.liukang.mybroadcastprojrct",
        "com.example.liukang.mybroadcastprojrct.MyReceiver1"));  // Android 8.0之后必须指定包名,以及包名.类名
intent.putExtra("MyReceiver1", "MyReceiver1广播");  
sendBroadcast(intent);
//sendOrderedBroadcast(intent,null);  发送有序广播  
二. 动态注册 写一个类继承
public class MyMainReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent != null) {
            String main = intent.getStringExtra("main");
            Toast.makeText(MainActivity.this, "这是MyMainReceiver广播接收的数据:" + main, Toast.LENGTH_LONG).show();
        }
    }
}
动态注册
MyMainReceiver  myMainReceiver = new MyMainReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("MyMainReceiver");
reGISterReceiver(myMainReceiver, filter);
发送广播:
//发送Main广播
Intent intent =new Intent();
intent.setAction("MyMainReceiver");
intent.putExtra("main","123456");
sendBroadcast(intent);
取消注册
unregisterReceiver(myMainReceiver );
三. 本地广播

只是APP内部使用,保证信息传递的安全

自定义广播
public class MyFirstActiivtyReceiver extends BroadcastReceiver{
     @Override
     public void onReceive(Context context, Intent intent) {
         if (intent!=null){
             String r2 = intent.getStringExtra("r2");
             Toast.makeText(context,r2,Toast.LENGTH_LONG).show();
             Log.e("TAG",r2);
         }
     }
 }
本地动态注册
receiver=new MyFirstActiivtyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("ACTION_TEST");
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.registerReceiver(receiver,filter);
本地发送:
Intent intent =new Intent();
intent.setAction("ACTION_TEST");
intent.putExtra("r2","123456");
localBroadcastManager.sendBroadcast(intent);
取消注册
localBroadcastManager.unregisterReceiver(receiver);
发送Broadcast Receiver 广播的三种发送方式 无序广播
//无序广播
Intent intent = new Intent();
intent.setAction("android.bawei.action.customer");
Bundle bundle = new Bundle();
bundle.putString("msg","我是猪头");
intent.putExtras(bundle);
sendBroadcast(intent);
有序广播
//有序广播
//有序广播要在注册时给intentFilter对象设置一个优先级
intentFilter.setPriority(1000);
//在发送消息时
sendOrderedBroadcast(intent,null);
粘性广播
//粘性广播 
//要注意的是 粘性广播已经过时在android8.0以后已经无法使用
//粘性广播最大的特点就是可以先发送消息 再注册 缺点是很消耗内存
sendStickyBroadcast(intent);
静态广播接收的处理器是由PackageManagerService负责,当手机启动或者新安装了应用的时候,PackageManagerService会扫描手机中所有已安装的APP应用,将AndroidManifest.xml中有关注册广播的信息解析出来,存储至一个全局静态变量当中。 动态广播接收的处理器是由ActivityManagerService负责,当APP的服务或者进程起来之后,执行了注册广播接收的代码逻辑,即进行加载,最后会存储在一个另外的全局静态变量中。需要注意的是: 广播发出的时候,广播接收者接收的顺序如下:
1.当广播为普通广播时,有如下的接收顺序:
  无视优先级
  动态优先于静态
  同优先级的动态广播接收器,先注册的大于后注册的
  同优先级的静态广播接收器,先扫描的大于后扫描的
2.如果广播为有序广播,那么会将动态广播处理器和静态广播处理器合并在一起处理广播的消息,最终确定广播接收的顺序: 
  优先级高的先接收 
  同优先级的动静态广播接收器,动态优先于静态
  同优先级的动态广播接收器,先注册的大于后注册的
  同优先级的静态广播接收器,先扫描的大于后扫描的 常用的系统广播的action 和permission
系统操作 Action permission
开机启动 android.intent.action.BOOT_COMPLETED android.permission.RECEIVE_BOOT_COMPLETED
网络状态 android.net.conn.CONNECTIVITY_CHANGE android.permission.ACCESS_NETWORK_STATE
电量变化 android.intent.action.BATTERY_CHANGED
SD卡状态 android.intent.action.MEDIA_MOUNTED
android.intent.action.MEDIA_UNMOUNTED
android.intent.action.MEDIA_REMOVED
监听应用的安装、卸载、更新 android.intent.action.PACKAGE_ADDED
android.intent.action.PACKAGE_REPLACED
android.intent.action.PACKAGE_REMOVED

自定义权限时必须同时指定 protectionLevel 属性值,系统根据该属性值确定自定义权限的使用方式

属性值 限定方式
nORMal 默认值。较低风险的权限,对其他应用,系统和用户来说风险最小。系统在安装应用时会自动批准授予应用该类型的权限,不要求用户明确批准(虽然用户在安装之前总是可以选择查看这些权限)
dangerous 较高风险的权限,请求该类型权限的应用程序会访问用户私有数据或对设备进行控制,从而可能对用户造成负面影响。因为这种类型的许可引入了潜在风险,所以系统可能不会自动将其授予请求的应用。例如,系统可以向用户显示由应用请求的任何危险许可,并且在继续之前需要确认,或者可以采取一些其他方法来避免用户自动允许
signature 只有在请求该权限的应用与声明权限的应用使用相同的证书签名时,系统才会授予权限。如果证书匹配,系统会自动授予权限而不通知用户或要求用户的明确批准
signatureOrSystem 系统仅授予Android系统映像中与声明权限的应用使用相同的证书签名的应用。请避免使用此选项,“signature”级别足以满足大多数需求,“signatureOrSystem”权限用于某些特殊情况

作者:白露未晞


--结束END--

本文标题: Android四大组件之Broadcast Receiver

本文链接: https://www.lsjlt.com/news/28888.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android四大组件之broadcast广播详解
    目录基础广播两大类广播广播的动态和静态注册监听时间变化监听系统启动案例创建 receiver设置权限发送自定义广播如何发送与接收有序广播基础广播 两大类广播 标准广播:异步执行,广播...
    99+
    2024-04-02
  • Android四大组件之broadcast广播使用讲解
    目录一、广播机制概述二、广播接收者1、广播接收者的创建2、广播接收者的注册三、广播的类型1、无序广播2、有序广播一、广播机制概述 通常情况下在学校的每个教室都会装有一个喇叭,这些喇叭...
    99+
    2022-12-26
    Android broadcast Android broadcast广播组件
  • Kotlin四大组件中的broadcast广播
    目录创建Fragmen 碎片主界面中添加ViewPager创建广播小结在上一章中,有个问题可能大家都没有注意,Acitivity 在使用startActivityForResult后...
    99+
    2022-12-08
    Kotlin broadcast Kotlin broadcast广播 Kotlin 广播
  • Android四大组件之BroadcastReceiver详解
    BroadcastReceiver是Android四大组件之一,用于接收和处理系统广播或者应用内发送的广播。广播是一种跨组件、跨应用的通信机制,可以用于在应用内部或者应用之间传递消息或者事件。BroadcastReceiver的主要作用...
    99+
    2023-08-09
    Android
  • Android四大组件之Activity详细介绍
    目录理论概述Activity的理解Activity的定义Activity的作用类比Activity与ServletIntent的理解Intent的分类Intent的使用IntentF...
    99+
    2024-04-02
  • Android四大组件之广播BroadcastReceiver详解
    定义 BroadcastReceiver,“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,广播体现在方方面面,例如当开机完成后系统会产...
    99+
    2024-04-02
  • Android四大组件之Service服务详细讲解
    目录一、Service是什么二、Service 的启动方式2.1、startService 显示启动Service启动Service 停止2.2、bindService 绑定启动使用...
    99+
    2024-04-02
  • Android四大组件之Activity深入解读生命周期
    目录一、什么是Activity二、Activity之间的跳转三、Activity 生命周期3.1、Activity生命周期的基本状态3.2、Activity 生命周期的7个方法3.3...
    99+
    2024-04-02
  • android四大组件有什么功能
    Android四大组件是Activity、Service、BroadcastReceiver和ContentProvider。1. ...
    99+
    2023-08-26
    android
  • android的四大组件分别是什么
    这篇“android的四大组件分别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“android的四大组件分别是什么”文...
    99+
    2023-07-04
  • android的四大组件有哪些优缺点
    Android的四大组件包括Activity、Service、BroadcastReceiver和ContentProvider,它...
    99+
    2023-09-15
    android
  • Android入门教程 | 四大组件之Service(前台服务,后台服务)
    Service是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可...
    99+
    2023-12-22
    android microsoft android studio 开发语言 java
  • Python四大金刚之元组详解
    目录引言 一、元组的创建方式二、元组的遍历总结引言  一、元组的创建方式 #第一种: t = ('python','No.1') print(t) pri...
    99+
    2024-04-02
  • Android12四大组件之Activity生命周期变化详解
    目录前言点击返回键Activity不在onDestroy重新onBackPressed时的注意点总结前言 Android12 有很多令人惊喜的变化,比如基于 Material You...
    99+
    2024-04-02
  • vue的四大组件是什么
    这篇“vue的四大组件是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue的四大组件是什么”文章吧。vue有4大组件:...
    99+
    2023-07-04
  • Anroid四大组件service之本地服务的示例代码
    服务是Android四大组件之一,与Activity一样,代表可执行程序。但Service不像Activity有可操作的用户界面,它是一直在后台运行。用通俗易懂点的话来说:如果某个应用要在运行时向用户呈现可操作的信息就应该选择Activit...
    99+
    2023-05-30
    android service 本地服务
  • 云服务器的四大件有哪些组成部件
    CPU CPU是云服务器的核心部件,它是一个计算机系统中最核心的组件之一。CPU的性能决定了整个云服务器的运行效率和稳定性。一般来说,云服务器中的CPU主要由两个部分组成:核心处理器和用户级处理器。核心处理器负责CPU的主线程,用户级...
    99+
    2023-10-27
    部件 服务器 有哪些
  • 云服务器的四大件有哪些组成
    云服务器是一种虚拟化软件,由服务器硬件和云存储服务组成。以下是云服务器的几大件: 服务器硬件:主要是服务器所依赖的硬件系统,如处理器、内存、磁盘、操作系统、网络等。 云存储服务:是一种云端存储服务,用于保存用户的文件、数据、应用程序等。...
    99+
    2023-10-27
    服务器 有哪些
  • Android组件之服务的详解
    目录一、服务的概念二、Android的多线程编程2.1 线程的基本用法2.2 在子线程中更新UI更新方式一更新方式二2.3 解析异步消息处理机制2.4 使用AsyncTask三、服务...
    99+
    2024-04-02
  • Vue组件之间四种通信方式详解
    目录前言父子组件通信​父组件与子孙组件的通信​父组件获取子组件数据​无需考虑组件关系的通信​前言 vue 框架提供了前端开发组件的思想,可以通过组件来组合成一个完整的页面,都是随着组...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作