Android开发的四大组件分别是:
  • 活动(activity),用于表现功能;
  • 服务(service),后台运行服务,不提供界面呈现;
  • 广播接受者(BroadcastReceive),勇于接收广播;
  • 内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库

注意:所有的组件都需要注册

一、本文讲的是广播(BroadcastReceiver)

Android中的四大组件之一,是Android系统以及应用程序传递信号的一种机制。它灵活的穿梭在各个应用程序之间或者是单个应用程序的内部,一旦发现满足条件的接收者,就会去这个接收者中进行广播

点击参考官网

使用场景

  • 手机快没电了,弹出了提示电量不足的消息窗口
  • 逛淘宝的时候没信号,会弹出提示无法连接网络的提示信息
  • 电话来电的时候
二、广播的注册方式
  • 静态注册(清单声明的接收器)
  • 动态注册(上下文注册的接收器)
1、静态注册
  • 创建MyBroadcastReceiver类,继承BroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,"静态广播------",Toast.LENGTH_SHORT).show();}
}
  • 在清单文件(AndroidManifest.xml)中注册
 <receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true"><intent-filter><action android:name="com.example.demoh.MyBroadcastReceiver"/></intent-filter></receiver>

Enabled属性的作用是是否启动这个广播接受器。
Exported属性的作用是是否允许这个广播接收器接受本程序以外的广播
android:name =" 里面的名字可随意(最好是统一包名+类名)"

  • 写一个发送广播的点击事件

  • activity_main.xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击发送静态广播" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击发送动态广播" /></LinearLayout>
  • MainActivity
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=findViewById(R.id.button);//点击事件的处理button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();intent.setAction("com.example.demoh.MyBroadcastReceiver");//安卓8.0以上,加上下面这一句,第一个参数是目标广播接收器所在应用的包名,第二个参数是目标广播接收器类全路径intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver"));sendBroadcast(intent);}});}
}
`注意:如果点击无效果,不发送广播,或者您的应用以 API 级别 26(安卓8.0) 或以上更高级别的平台版本为目标,加上 下面的一句
intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver"));
//intent.setComponent(new ComponentName(包名,包名+".MyBroadcastReceiver"));
2、动态注册
  • 创建MyBroadcastReceiver2类,继承BroadcastReceiver
public class MyBroadcastReceiver2 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,"动态广播------",Toast.LENGTH_SHORT).show();}
}
  • 在清单文件(AndroidManifest.xml)中注册
<receiver android:name=".MyBroadcastReceiver2"/>
  • 布局上面有
public class MainActivity extends AppCompatActivity {private MyBroadcastReceiver2 receiver2=new MyBroadcastReceiver2();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=findViewById(R.id.button);Button button2=findViewById(R.id.button2);//静态注册点击事件button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();intent.setAction("com.example.demoh.MyBroadcastReceiver");intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver"));sendBroadcast(intent);}});//动态注册点击事件IntentFilter filter=new IntentFilter();filter.addAction("com.example.demoh.MyBroadcastReceiver2");registerReceiver(receiver2,filter);button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();intent.setAction("com.example.demoh.MyBroadcastReceiver2");intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver2"));sendBroadcast(intent);}});}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(receiver2);}
}

别忘了在onDestroy()中 销毁广播

Android 四大组件 -- BroadcastReceiver(广播)相关推荐

  1. Android四大组件---BroadcastReceiver

    前言: BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于B ...

  2. Android四大组件之广播接收器BroadcastReceiver

    Android系统的广播有一个全局监听器,专门用于监听/接收应用程序发出的广播消息. 广播的作用 可以实现不同组件之间的通信(这些组件可以是同一应用内的或不同应用内的.) 多线程通信 与Android ...

  3. Android四大组件:广播机制——BroadcastReceiver

    Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为 ...

  4. 探索Android四大组件之广播

    目录 一.广播的机制 二.探索广播 1.动态注册 2.静态注册和发送标准广播 3.发送有序广播 三.提出问题 第一个问题 第二个问题 第三个问题 四.探索问题 第一个问题 第二个问题 第三个问题 广播 ...

  5. Android 四大组件之广播(Broadcast)

    一.广播是什么? 广播分为发送者和接受者,可以理解为发送者发送通知,接受者可以选择接收通知 广播分为系统广播和本地广播,系统广播可以分为标准和有序 标准广播:一但发出所有接收者同时受到 有序广播:接收 ...

  6. Android四大组件-Service

    目录 启动方式 独立启动 使用场景 生命周期 绑定启动 使用场景 生命周期 特性 多次启动 版本适配 5.0(21) 8.0(26) 9.0(28) 12(31) 后台启动服务思路 广播启动 省电白名 ...

  7. android 广播的权限,Android四大组件详解之BroadcastReceiver广播接收者

    Android四大组件详解---BroadcastReceicer广播接收者 广播有两个角色,一个是广播发送者,另一个是广播接收者. 广播按照类型分为两种,一种是全局广播,另一种是本地广播 全局广播: ...

  8. Android四大组件之BroadCastReceiver

    1. 基本概念 在Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制.而BroadcastReceiver 是对发送出来的Broadcast 进行过滤接受并响应的一类 ...

  9. Android四大组件系列7 Broadcast广播机制(上)

    一 概述 广播 (Broadcast) 机制用于进程或线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者 BroadcastReceiver 是 Android 四大组件之一.Broadc ...

最新文章

  1. VML编程之------VML语言入门《VML极道教程》原著:沐缘华
  2. 说说重试的那些实现方式
  3. 充电桩用什么写软件_充电桩云平台是什么?
  4. iOS10 资料汇总:值得回看的 10 篇 iOS 热文
  5. linux 内核内核签名_24岁生日快乐,Linux内核
  6. leetcode-125 Valid Palindrome
  7. 基于OpenCV文字特征提取
  8. for ihs linux_在IBM的IHS上编译PHP(redhat 5.5 64位的环境)
  9. selenium操作浏览器
  10. UML for mac
  11. 【Java实战篇】SpringBoot+MyBatis快速实现登录注册
  12. 还在谈论云计算吗?算力网络来啦!!!
  13. MySQL中ignore,replace的使用
  14. JavaScript实现论坛发贴等功能
  15. Matlab绘图——填充相交区域
  16. 将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装
  17. 刘未鹏逃出肖申克系列链接
  18. 如何解决NTLDR is missing
  19. 为什么CNN中的卷积核一般都是奇数
  20. 基于瞬时无功功率ip-iq的谐波信号检测MATLAB仿真

热门文章

  1. 大数据精准营销应用(一)
  2. visio2016激活 试用版
  3. Android黑白照片上色APP,Colorize上色APP
  4. python爬取优词词典
  5. 声明:请各位领导不要再看到我的文章瞎指挥了
  6. vba传值调用_VBA 过程和函数:传递参数教程和实例
  7. Maps uniqueIndex
  8. 【Head First 设计模式】观察者模式
  9. 想起了清华校长的几句话
  10. python3中数字类型有哪些_Python3数据类型—列表 | 吴老二