Android学习_广播接收器
一、广播
1. 标准广播和有序广播
标准广播:异步,发出消息,所有接收器同时接收。但无法被截断
有序广播:同步,同一时刻只有一个广播接收器接收。可截断消息。
2. 广播注册
代码中注册(动态注册)、AndroidManifest.xml中注册(静态注册)
1) 动态注册
动态注册更灵活,但是必须要在程序启动后才能接收广播。
Step1:新建一个继承BroadcastReceiver类的类(自定义类或者内部类),并重写onReceive方法(广播接收器接收到相应广播后,会自动调用onReceive()方法)
Step2:创建IntentFilter并添加需要监听广播所对应的action值
Step4:用registerReceiver()注册监听器,将监听器和IntentFilter的实例作为两个参数传入(Context.registerReceiver()方法)
Step3:重写所在activity的onDestory()方法,在onDestory()中用unregisterReceiver()取消注册监听器(动态注册广播接收器一定要取消注册)
注意:如果程序需要进行一些对用户比较敏感的操作,必须在配置文件中声明权限
2) 静态注册
启动未程序时就能接收广播
2. 发送自定义广播
1) 发送标准广播
Intent intent = new Intent(“com.example.broadcasttest.MY_BROADCAST”); // com.example.broadcasttest.MY_BROADCAST是自定义广播的值
sendBroadcast(intent);
提示:可以在intent中携带一些数据传递给广播接收器。
2) 发送有序广播
sendOrderedBroadcast(intent,null);
u 设置优先级:
<intent-filter android:priority=”100”>…
u 截断广播
在onReceive()方法中调用abroadBroadcast()方法
3. 本地广播
解决广播的安全性问题。
首先通过LocalBroadcastManager的getInstance()方法得到它的实例。
注册广播接收器:LocalBroadcastManager.registerReceiver(localReveiver,intentFilter);
发送广播:LocalBroadcastManager.sendBroadcast(intent);
取消注册:LocalBroadcastManager.unregisterReceiver(localReceiver);
4. 最佳实践——实现强制下线功能
1) 使用继承提高代码的复用性
2) 在onResume中注册广播接收器,在onPause中取消注册。这样就可以保证只有处于栈顶的活动才能接收到广播,非栈顶活动接收不到。
Android学习_广播接收器的更多相关文章
- Android学习笔记--广播(Broadcast)
1.Android广播分类 android的广播类型分为两类:标准广播和有序广播. 标准广播:异步广播,广播发出后,所有注册了的广播接收器都会同时接收到该广播.打个比方:做地铁过程中的语音播报,当列车 ...
- Android学习_注意事项
一. Fragment中加载ListView public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle ...
- Android学习_服务
一. 服务1. Android多线程 每一个Android应用程序都会分别运行在一个独立的Dalvik(或ART?)虚拟机中,而每个虚拟机在启动时会运行一个UI主线 ...
- Android学习_内容提示器
内容提供器 1. 创建自己的内容提供器 1) 继承ContentProvider类,重写6个方法:onCreate().query().insert().update().delete ...
- Android学习_数据持久化
数据持久化:将内存中的瞬时数据存储到设备中 1. 文件存储 存储一些简单的文本数据或二进制数据. 核心:Context类提供的openFileOutput()和openFileInput()方法,然后 ...
- android广播接收器
Android程序创建广播接收器继承BroadcastReceiver Android广播接收器需要在AndroidManifest.xml文件中声明: <recevie android:nam ...
- 入职小白随笔之Android四大组件——广播详解(broadcast)
Broadcast 广播机制简介 Android中的广播主要可以分为两种类型:标准广播和有序广播. 标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播 ...
- Android中的广播
Android中的广播 广播接受器,可以比喻成收音机.而广播则可以看成电台. Android系统内部相当于已经有一个电台 定义了好多的广播事件,比如外拨电话 短信到来 sd卡状态 电池电量变化... ...
- android 学习笔记 杂记1
getIntent().getExtras().get("intent"); 这个intent是数据包装的参数. 比如: Intent intent = new Intent(th ...
随机推荐
- WIN7(WINDOWS7)在添加网络打印机时提示这个,这里的密码是什么密码,能不能不用密码?
360急救箱应该提高计算机的网络访问安全性,加上与验证机制,所以当你要访问的网络资源,你需要输入用户名和密码进行认证. 1,点击“开始 - 运行”,输入gpedit.msc然后按Enter键. 2,计 ...
- c# mvc权限系统
登陆界面可以用index1,现在这个是仿照这个写的 登陆后的界面.模板都是套的,数据那个easyui自己写的 后台直接三层架构,dapper连处理数据后面加了autofac demo地址:https: ...
- wpf menuitem 简约显示的 template样式
<ControlTemplate x:Key="MenuItemControlTemplate1" TargetType="{x:Type MenuItem}&qu ...
- Ubuntu12.04+Caffe (+OpenCV+CPU-only)
经过一天的努力发现12.04 的pcre的库太低了, 要解决这个bug只能升级系统到16.04 麻蛋!!! 1. 下载大神MTCNN 源码,内含caffe https://github.co ...
- mqtt协议实现 java服务端推送功能(一)安装
最近有个新需求,需要通过java服务端把信息推送到mqtt服务器上,安卓和ios端从mqtt服务器上获取信息实现推送. 1. 本地需要安装Mosquitto服务器 http://mosquitto. ...
- CTF 常见操作总结
一般流程 首先看header, veiwsource, 目录扫描 有登陆, 尝试sql注入&爆破 有数据库, 必然sql注入? 普通sql注入 判断是否存在回显异常 尝试单双引号 查是字符型? ...
- 【Javascript】 js的构造函数与原形对象的关系
构造函数只是提供了一个创建对象的模板,它并不是对象的原形. 对象的原形是构造函数的原形,即object. ----------------------------------------------- ...
- js之语句(表达式语句,复合语句,声明语句)
语句就是JavaScript整句或命令,以分号结束,用来执行以使某件事发生.下面将介绍三种语句:表达式语句,复合语句,声明语句. 一.表达式语句 表达式语句是javascript中最简单的语句 < ...
- JavaScript笔记(3)
字典(Array对象) Array对象当字典使用时,.length属性就不能使用了 如果想访问对象元素,不能使用索引,只能使用key 如果遍历字典,只能使用for--in语句 字典是另一种可变容器模型 ...
- php使用rdkafka进行消费
如仅作为消费者或生产者,直接使用下面消费者或生产者的代码,并安装扩展即可. PHP要安装rdkafka扩展,而rdkafka又依赖librdkafka,因此你需要安装rdkafka和librdkafk ...