zoukankan      html  css  js  c++  java
  • android应用无法接收到广播?

    本篇文章记录Android应用无法接收到广播的几种case

    1. 没有register

    广播其实是一种订阅者模式,所以当然需要先register,register的方式有两种

      1.1  through manifest-declared receivers 通过manifest静态注册

           1.1.1 在manifest文件的<application></application>添加<receiver/>标签

    静态注册意味着应用在安装后就开始接收广播,一旦接收广播系统会打开应用进程,但是如果应用在stopped状态下则不会接收到广播

      1.2 context-registered receivers 代码动态注册

    要记得在ondestory时unregisterReceiver,以免内存泄漏

    2. 没有添加相应的权限,可以再manifest中进行注册

    3.应用安装在了sd卡中,安装在sd卡上的应用无法接收到广播,这种情况比较少,默认都是安装的存储卡中

      3.1  internalOnly  表示只安装在内存,内存不够则无法安装,默认选项

      3.2 preferExternal  表示优先安装在sd卡上,sd卡不存在或控件不够时安装在内存上

      3.3 auto 表示优先安装在内存上,内存不够时尝试安装在sd卡上

    4. 应用安装后从未启动过,这种时候应用处于stopped状态,stopped状态下的应用无法接收到任何广播,只有当用户手动启动过应用后才会接收到广播

       当然是针对系统发出的广播,比如开机广播android.intent.action.BOOT_COMPLETED,系统只广播一次,且只针对不是stopped状态的应用

       针对app发出的广播也有解决方案

    5. 如何测试广播

     

    学会勇敢
  • 相关阅读:
    public/private/protected的具体区别
    解决密码自动填充的问题
    tp导出excel
    好久没更了,确实太忙了--dedecms篇
    解决css的float父div没有高度
    随笔
    总结最近写的h5项目
    ajax删除当前行
    开发时常遇到的小问题
    js处理时间戳
  • 原文地址:https://www.cnblogs.com/Sir-Lin/p/7647135.html
Copyright © 2011-2022 走看看