Android广播分为动态、静态广播。

广播接收器注册一共有两种形式 : 静态注册和动态注册.

两者及其接收广播的区别:

1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低>\

2.动态注册广播不是 常驻型广播 ,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。

静态注册是常驻型 ,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

3.同种广播如果在同一个优先级下,谁先启动的快,谁将先接收到广播。

广播的有序无序传播详见我的博客:点击打开链接

下面主要说下动态广播的注册流程。

首先动态广播是不需要在Manifest文件中进行注册的,这与静态广播有很大的区别。

<span style="font-size:12px;"><?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima.register"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.itheima.register.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.itheima.register.RegisterService"></service></application></manifest></span>

其次动态广播通常注册在Service的onCreate方法当中,在Service销毁的时候,会解除注册。

<span style="font-size:12px;">package com.itheima.register;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;public class RegisterService extends Service {private ScreenReceiver receiver;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {super.onCreate();//1.创建广播接收者对象receiver = new ScreenReceiver();//2.创建intent-filter对象IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_SCREEN_OFF);filter.addAction(Intent.ACTION_SCREEN_ON);//3.注册广播接收者registerReceiver(receiver, filter);}@Overridepublic void onDestroy() {super.onDestroy();//解除注册unregisterReceiver(receiver);}
}</span>

下面是监听屏幕开关的广播;

<span style="font-size:12px;">public class ScreenReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString action = intent.getAction();if(Intent.ACTION_SCREEN_OFF.equals(action)){System.out.println("屏幕关闭");}else if(Intent.ACTION_SCREEN_ON.equals(action)){System.out.println("屏幕打开");}}}</span>

在Android 3.1系统之后,静态广播默认会被后台回收掉的,这部分知识详见我的博文:点击打开链接。因此,静态广播多数是不安全的,所以建议建立动态广播,并且与Service进行绑定,这样做有利于长时间的后台监听。在Activity中注册广播接收者建议在onResume()当中进行注册。在onDestroy()进行销毁。

Android在Service中注册动态广播接收者相关推荐

  1. Android短信的发送和广播接收者实现短信的监听

    Android短信的发送和广播接收者实现短信的监听  要注意Android清单中权限的设置以及广播的注册监听实现 以下就是 Android清单的XML AndroidManifest.xml < ...

  2. android 注册动态广播 注销_Android学习笔记(十一)BroadcastReceiver动态注册、注销示例...

    在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承Br ...

  3. 14_Android中Service的使用,关于广播接收者的说明

     服务:长期后台运行的没有界面的组件 android应用:什么地方需要用到服务? 天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息 股票显示:后台的连接服务器的逻辑,每隔一段时间获 ...

  4. Android开发--Service和Activity通过广播传递消息

    Android的Service也运行在主线程,但是在服务里面是没法直接调用更改UI,如果需要服务传递消息给Activity,通过广播是其中的一种方法: 一.在服务里面发送广播 通过intent传送数据 ...

  5. Android在Service中显示Dialog

    在Service中弹出一个Dialog对话框 第1步:在应用的AndroidManifest.xml中需要添加权限.没有无法显示. <uses-permission android:name=& ...

  6. Android 在Service中使用bindService

    前面已经对Service的startServer方式启动一个服务了解过了,现在来看一下Service的另一种启动方式→bindServer bindServer使用场景 1.在同个app之间调用(即是 ...

  7. Android在service中实现随机数产生

    1.在service中实现随机数产生: 2.实现Service中的各个生命周期函数,并理解其功能: 2.在Activity界面实现随机数的显示,每2秒更新一次: 3.采用启动式完成service的启动 ...

  8. android 注册动态广播 注销_动态注册和注销BroadcastReceiver

    Android广播机制 一.Android广播机制介绍 广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的. Android中广播的是操作系统中产生的各种各样的事件 ...

  9. android接收不能广播,【11-16求助】急急急,service中无法接收广播!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package com.exp; import android.app.Activity; import android.content.Broadcas ...

最新文章

  1. java调用ffmpeg,mencoder进行视频转换,读取时长等
  2. “比特币耶稣”Roger Ver:比特币现金分叉没有技术论据支持
  3. (0090)iOS开发之本地文件预览的三种方法(1)
  4. 【贪心】P1056 排座椅
  5. MySQL高可靠_MySQL高可用与高可靠架构
  6. snapshot相关
  7. extjs 表单设置html5,ExtJS 配置和表格控件使用
  8. ubuntu系统中import h5py, ImportError: No module named h5py的解决方法
  9. Linux下的绘图(流程图、UML、mindmap)工具
  10. Error parsing XML: not well-formed (invalid token)
  11. Spring容器创建流程(4)调用beanFactory后置处理器
  12. 第一章节 ASP.NET Web应用程序基础(二)
  13. 南京市建筑物矢量数据(Shp格式+带高度)
  14. 飞思卡尔单片机DZ60---TPM1\TPM2溢出中断
  15. Java类属性字段校验(validation的使用)
  16. 惠普电脑u盘重装系统步骤_惠普笔记本u盘系统安装步骤 惠普u盘启动系统安装...
  17. Bert:Pre-training of Deep Bidirectional Transformers forLanguage Understanding
  18. windows统计各个目录的大小
  19. 量子计算机研制成功图片,光量子计算机的曙光:科学家成功研制出量子光源
  20. Lecture4 反向传播(Back Propagation)

热门文章

  1. EasyCVR实现智慧楼宇道闸控制流程及参考代码分享
  2. 织梦官方幻灯片调用以及幻灯片模糊的处理办法
  3. docker 阿里云仓库地址
  4. 如何提高团队管理能力3
  5. 【Python项目】Flask + MySQL 实现用户注册,登录、注销
  6. first集合及follow集合
  7. 【YOLO系列】YOLOv3
  8. 计算机二级选择题笔记百度云,计算机二级题库及计算机二级ms office 复习笔记.doc...
  9. 长程蓝牙温湿度及光照度传感器 , 带四通道开关及指示灯(集成太阳能微能量采集功能)
  10. 基于STM32的智能小车方案设计