《第一行代码》(第二版)广播的问题及其解决
1)5.2.1弹出两次已连接或者未连接
这是因为你同时打开了流量和WiFi,他就会发出两次广播。
2)5.3.1中发送自定义广播问题
标准广播未能弹出消息:
Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");
sendBroadcast(intent);
上述已经失效了。
修改:
Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");
intent.setPackage("com.example.broadcasttest");
sendBroadcast(intent);
原因:
若App的TargetSDK达到了26, 我们正常静态注册的广播就没有用了。能用的仅有以下豁免的Broadcast, 包括我们自己正常发广播,如果不指定包名, 静态注册的也是收不到的。PS:动态注册是没有影响的。
3)5.3.2发送有序广播时同样的问题
BroadcastTest2接收不到标准广播,未能弹出"received in AnotherBroadcastReceiver"
解决办法:
在发送广播中的那个MainActivity中修改
Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");
intent.setPackage("com.example.broadcasttest");
sendBroadcast(intent);
Intent intent2=new Intent("com.example.broadcasttest.MY_BROADCAST");
intent2.setPackage("com.example.broadcasttest2");
sendBroadcast(intent2);
原因:
依然是因为静态注册未指定包名;
4)截断广播
静态注册的广播不知道能不能截断,但是似乎说是失效了,只能截断动态注册广播。此时我们就会换成动态注册,以后也尽量使用动态注册。也不需要带上setPackage就能发送了,简单多了。
private IntentFilter intentFilter;private MyBroadcastReceiver myBroadcastReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.button);intentFilter = new IntentFilter();intentFilter.addAction("com.example.broadcasttest.MY_BROADCAST");intentFilter.setPriority(100);myBroadcastReceiver = new MyBroadcastReceiver();registerReceiver(myBroadcastReceiver,intentFilter);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
// intent.setPackage("com.example.mybroadcastreceiver");sendOrderedBroadcast(intent,null);
// Intent intent2 = new Intent("com.example.broadcasttest.MY_BROADCAST");
// intent2.setPackage("com.example.broadcasttest2");
// sendOrderedBroadcast(intent2,null);}});
intentFilter.setPriority(100);
设置优先级,优先级高的先播出。
如果需要截断,就是不向下继续传递广播,就可以在该广播中写如:
abortBroadcast();
以上我将学习《第一行代码》(第二版)广播因代码失效改进的问题。
本文章借鉴如下博客:
这个是原因,但是其中的代码我没有成功实现。
(5条消息) 《第一行代码2》的5.3.1节,发送标准广播后没有弹出提示消息_qq_42332046的博客-CSDN博客
以下是成功实现的代码原博客:
(5条消息) Android 第一行代码(第二版) 发送标准广播无效 接受不到_明道_N的博客-CSDN博客
(5条消息) 第一行代码5.3有序广播_昵称不能为——的博客-CSDN博客
《第一行代码》(第二版)广播的问题及其解决相关推荐
- 第一行代码-第二版(郭霖著)笔记五(Broadcast Receiver)
目录 一.广播机制简介 二.接收系统广播 1.动态注册监听网络变化 2.静态注册实现开机启动 三.发送自定义广播 1.发送标准广播 2.发送有序广播 五.广播的最佳实践---实现强制下线功能 一.广播 ...
- Android第一行代码第二版简要总结
进入安卓的第一本书(简要概括) 第一章 了解大体Android 1.Android系统架构 Linux内核层:为Android设备的各种硬件提供了底层的驱动. 系统运行库层:通过c/c++库来提供主要 ...
- 第一行代码-第二版(郭霖著)笔记六(持久化技术)
目录 一.持久化技术简介 二.文件存储 1.将数据存储到文件中 2.从文件中读取数据 三.SharedPreference存储 1.将数据存储到SharedPreferences中 2.从Shared ...
- 第一行代码-第二版(郭霖著)笔记十一(高级技巧)
目录 一.全局获取Context的技巧 二.使用Intent传递对象 1.Serializable方式 2.Parcelable方式 三.定制自己的日志工具 四.调试Android程序 五.深色主题 ...
- 第一行代码第二版6.4.1小节创建数据库中遇到adb shell出错的问题
该小节中我们照着作者说的一步步写完相应的代码,并运行程序,最后需要使用adb shell来对数据库和表的创建情况进行检查. 可是当配置好环境变量之后,在命令行终端输入adb shell结果如下所示: ...
- 第一行代码-第二版(郭霖著)笔记四(Fragment)
目录 一.碎片是什么 二.碎片的使用方式 1.碎片的简单用法 2.动态添加碎片 3.在碎片中模拟返回栈 4.碎片和活动之间的通信 三.碎片的生命周期 1.碎片的状态和回调方法 四.动态加载布局的技巧 ...
- 第一行代码(第二版)全书代码下载
Github地址: https://github.com/newcaoguo/booksource
- 《第一行代码》中遇到的问题
前言: 最近刚刚学完郭霖的第一行代码(第二版)这本书,是我选择入门安卓的一本书,看到很多人都推荐这本书,所以就去图书馆借来趁寒假学习下.但是由于技术是不断更新的,而这本书是16年的,虽然也算是市面上比 ...
- Android build.gradle文件详解(转述自《Android第一行代码》第二版)
Android build.gradle文件详解 1. 最外层目录下的build.gradle文件 1.1 repostories 1.2 dependencies 2. app目录下的build.g ...
- Kotlin 基础语法(《第一行代码(第三版)》第二章读书笔记)
资源来自<第一行代码>(第三版)第二章 网络试读: https://www.ituring.com.cn/book/tupubarticle/30209 以下为笔记 转存失败重新上传取消正 ...
最新文章
- LVS负载均衡之持久性连接介绍(session篇)
- Excel超级链接方式应用技巧
- javascript创建对象 1
- 软件测试相关概念与分类
- pdf 深入理解kotlin协程_Kotlin协程实现原理:挂起与恢复
- java向有序数组里插数_Java向有序数组中插入一个元素,,使其仍按有序排列,并求出这个插入元素的下标...
- Ant Design暗黑模式设计解析
- SpringBoot任务——JSoup+定时任务 定时爬取微博热搜至数据库
- 在idea导入项目依赖爆红
- UE4 编辑器下生成自定义蓝图类
- 体验极好的临时邮箱,10分钟邮箱,极美观,速度特别快
- 桌面文件不见了怎么办?3个详细教程
- 常用分析模型---5W2H分析模型
- 代理服务器proxy server
- while(true) Thread.Sleep(XX)我通常是用这种写法,有没有更好的写法或者改进
- J2EE:赛迪网J2EE视频总结
- 计算机网络实验 数据链路4-6章 问答题
- OtterCTF 3-4
- AcWing 3565. 完美矩阵 (绝对值不等式)
- java项目如何分工合作,JavaWeb基础 jsp+servlet分工合作的简单示例
热门文章
- STM32驱动LCD1602程序(调试已成功)
- 科立捷默认频率_科立捷(KOLEEJ) 【京东配送·隔日达】民用大功率自驾游酒店地下室隧道4S店对讲机 KLJ-T10...
- 【笔记整理】电磁场复习——麦克斯韦四个方程组
- 51单片机实现电子密码锁设计
- 计算机与农学论文,农学毕业论文范文
- 华为服务器u盘安装win系统,华为电脑u盘重装系统win10教程
- 老板突然出现,游戏飞速隐藏,开源神器在手,摸鱼不怕被抓包
- Symbian 之浏览器
- Google Chrome抓包分析详解
- 计算机病毒属于源程序吗,计算机病毒是否是源程序吗