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 ...
随机推荐
- SharePoint 创建页面布局
一.前言 文章成体系,如果有不明白的地方请查看前面的文章. 二.目录 1.创建页面布局 2.首次使用页面布局 3.修改页面布局 4.使用页面布局 5.最终效果 1.创建页面布局 (1)打开设计管理器, ...
- html常用代码大全
1.结构性定义 文件类型 <HTML></HTML> (放在档案的开头与结尾) 文件主题 <TITLE></TITLE> (必须放在「文头」区块内) 文 ...
- 【原创】大叔经验分享(67)spring boot启动报错
spring boot 启动报错: Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback Logg ...
- ns nat rule
ns nat rule NAT实现方式: NAT的实现方式有三种,即静态转换(Static Nat).动态转换(Dynamic Nat) 和 端口多路复用(OverLoad). 静态转换是指将内部网络 ...
- 深入理解hadoop之HDFS
深入理解hadoop之HDFS 刚刚才写完关于mapreduce的一篇博文,趁热打铁接下来聊聊HDFS.本博文参考资料为HADOOP权威指南第3版完版,博文如有错漏之处,敬请指正. HDFS即Hado ...
- 09 Python之IO多路复用
四种常见IO模型 阻塞IO(blocking IO).非阻塞IO(nonblocking IO).IO多路复用(IOmultiplexing).异步IO(asynchronous IO) IO发生时涉 ...
- var正在声明变量
var正在声明变量也可以直接分配一个变量,而不在JS中声明它,但是这种变量在默认情况下是全局的.<!-/->是HTML中的注释,在JS中不起作用.它只是用来忽略无法识别脚本的浏览器的脚本内 ...
- spring boot 使用RedisTemplate
1导入包 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> ...
- Html5+Css3小试牛刀
前因: 我开始做个收款系统,突然客户跑来要插进一个任务,据说他们老板挺在意的,一个小商场,一个首页,一个详情页,UI无自由发挥,要求,尽量好看点. 一番交谈后,确认这是一个对外的网站,最好移动端也能正 ...
- Java高级技术点面试问题-IO相关面试问题
java网络编译: 基础知识:①.ip地址和端口号:ip地址是用来识别网络中的一个实体,而这个实体可以理解为一个主机,而端口号则是用来区分具体的通讯程序的.②.tcp / udp协议:tcp是一个可靠 ...