项目targetSdkVersion升级到26后,对应的的是Android O版本,即Android 8.0系统。经测试发现针对8.0及以上安卓版本手机,AndroidMainfest.xml中静态注册的广播接收器失效,当App中对应intent filter类型广播发出时,广播接收器中的onReceive方法并未被系统回调。
 
且在Android Studio Logcat中,出现如下所示错误信息提示:

2018-12-20 17:34:55.588 749-767/system_process W/BroadcastQueue: Background execution not allowed: receiving Intent { act=com.corn.ui.setting.Action.TEST_BROADCAST flg=0x10 } to com.corn/.biz.setting.CornTestBroadcastReceiver
 
核查Android官方文档,Android 8.0系统,对后台执行有进一步限制,包括对隐式广播的限制。

对应Logcat中信息,搜索Android framework源码,按Logcat中的日志关键词搜索到对应代码位置。
这里推荐使用 http://androidxref.com/
可以选定Andrid版本,以及对应源码项目等搜索项搜索。
 
 
上图else if中条件,与官方文档阐述一致,想要广播发送继续生效,可以使此条件不满足即可。
对应的,一般可以指定对应的广播接收器Component,或对应的广播接收器包名。
对应intent,常用的具体方法可以是:intent.setClass()或intent.setComponent()或intent.setPackage()等写法
 
进一步,官方文档中指出了ACTION_PACKAGE_REPLACED 就是一种隐式广播,而ACTION_MY_PACKAGE_REPLACED 则为显式广播,可以通过搜索代码进一步核实下,看看基本写法是否与上述逻辑一致。
 

 
可见,源码中写法与上述分析一致。

 

最新文章

  1. geotrellis使用初探
  2. Css、javascript、dom(二)
  3. 多媒体(1):MCI接口编程
  4. ASP.NET c# Redis 开发
  5. array,vertor,arraylist,hashable,hashmap等几个易混淆概念的区别
  6. django-cms 代码研究(七)杂七杂八
  7. win2003 多域名绑定一个ip
  8. mysql可视化管理工具
  9. 富文本web编辑器(UEditor)
  10. CLR via C#字符串和文本处理
  11. MonkeyRecorder
  12. WebRTC技术调研
  13. ETL过程
  14. Intellij IDEA的下载和使用(针对学生的免费使用计划)
  15. epoll c++封装
  16. CISCO ASA 5505 经典配置案例
  17. 快速切题 sgu115. Calendar 模拟 难度:0
  18. ns3 模拟无线网络通信
  19. CentOS6.5下安装Zabbix
  20. poj2373 Dividing the Path

热门文章

  1. Hession集成Spring + maven依赖通讯comm项目 + 解决@ResponseBody中文乱码
  2. Hive中Join的原理和机制
  3. httpClient连接超时设置
  4. JDK10都发布了,nio你了解多少?
  5. 关于overfit的随笔
  6. nginx常用配置系列-静态资源处理
  7. 【转】js 好的程序设计,应该什么时候使用 try catch 呢?
  8. maven入门 (二)_私服安装与上传下载
  9. What is the best way to handle Invalid CSRF token found in the request when session times out in Spring security
  10. 判断系统是64位还是32位的bat方法