Android在Service中注册动态广播接收者
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中注册动态广播接收者相关推荐
- Android短信的发送和广播接收者实现短信的监听
Android短信的发送和广播接收者实现短信的监听 要注意Android清单中权限的设置以及广播的注册监听实现 以下就是 Android清单的XML AndroidManifest.xml < ...
- android 注册动态广播 注销_Android学习笔记(十一)BroadcastReceiver动态注册、注销示例...
在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承Br ...
- 14_Android中Service的使用,关于广播接收者的说明
服务:长期后台运行的没有界面的组件 android应用:什么地方需要用到服务? 天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息 股票显示:后台的连接服务器的逻辑,每隔一段时间获 ...
- Android开发--Service和Activity通过广播传递消息
Android的Service也运行在主线程,但是在服务里面是没法直接调用更改UI,如果需要服务传递消息给Activity,通过广播是其中的一种方法: 一.在服务里面发送广播 通过intent传送数据 ...
- Android在Service中显示Dialog
在Service中弹出一个Dialog对话框 第1步:在应用的AndroidManifest.xml中需要添加权限.没有无法显示. <uses-permission android:name=& ...
- Android 在Service中使用bindService
前面已经对Service的startServer方式启动一个服务了解过了,现在来看一下Service的另一种启动方式→bindServer bindServer使用场景 1.在同个app之间调用(即是 ...
- Android在service中实现随机数产生
1.在service中实现随机数产生: 2.实现Service中的各个生命周期函数,并理解其功能: 2.在Activity界面实现随机数的显示,每2秒更新一次: 3.采用启动式完成service的启动 ...
- android 注册动态广播 注销_动态注册和注销BroadcastReceiver
Android广播机制 一.Android广播机制介绍 广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的. Android中广播的是操作系统中产生的各种各样的事件 ...
- android接收不能广播,【11-16求助】急急急,service中无法接收广播!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package com.exp; import android.app.Activity; import android.content.Broadcas ...
最新文章
- java调用ffmpeg,mencoder进行视频转换,读取时长等
- “比特币耶稣”Roger Ver:比特币现金分叉没有技术论据支持
- (0090)iOS开发之本地文件预览的三种方法(1)
- 【贪心】P1056 排座椅
- MySQL高可靠_MySQL高可用与高可靠架构
- snapshot相关
- extjs 表单设置html5,ExtJS 配置和表格控件使用
- ubuntu系统中import h5py, ImportError: No module named h5py的解决方法
- Linux下的绘图(流程图、UML、mindmap)工具
- Error parsing XML: not well-formed (invalid token)
- Spring容器创建流程(4)调用beanFactory后置处理器
- 第一章节 ASP.NET Web应用程序基础(二)
- 南京市建筑物矢量数据(Shp格式+带高度)
- 飞思卡尔单片机DZ60---TPM1\TPM2溢出中断
- Java类属性字段校验(validation的使用)
- 惠普电脑u盘重装系统步骤_惠普笔记本u盘系统安装步骤 惠普u盘启动系统安装...
- Bert:Pre-training of Deep Bidirectional Transformers forLanguage Understanding
- windows统计各个目录的大小
- 量子计算机研制成功图片,光量子计算机的曙光:科学家成功研制出量子光源
- Lecture4 反向传播(Back Propagation)
热门文章
- EasyCVR实现智慧楼宇道闸控制流程及参考代码分享
- 织梦官方幻灯片调用以及幻灯片模糊的处理办法
- docker 阿里云仓库地址
- 如何提高团队管理能力3
- 【Python项目】Flask + MySQL 实现用户注册,登录、注销
- first集合及follow集合
- 【YOLO系列】YOLOv3
- 计算机二级选择题笔记百度云,计算机二级题库及计算机二级ms office 复习笔记.doc...
- 长程蓝牙温湿度及光照度传感器 , 带四通道开关及指示灯(集成太阳能微能量采集功能)
- 基于STM32的智能小车方案设计