栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android四大组件之BroadcastReceiver

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android四大组件之BroadcastReceiver

1.两种类型
有序广播:同步执行,发出后,同时只有一个能收到,操作完成后依次向下发送,可以被拦截
无序广播:异步执行,发出广播后,所有的广播接收器几乎会同时收到,无法被拦截
2.两种注册方式
动态注册:代码中指定IntentFilter,增加不同的Action,使用后要手动取消注册
静态注册:在清单文件中注册,可以让程序在未启动时就可以接收到广播
3.注意事项
不要在广播里添加过多逻辑或耗时操作,广播中是不允许开辟线程的, 当onReceiver运行较长时间(超过10秒)还没有结束的话,会报错ANR, 广播更多的时候扮演的是一个打开其他组件的角色,比如启动Service,Notification提示, Activity等!
4.使用
动态注册广播
    1> 继承BroadcastReceiver,实现onReceiver方法,里面写逻辑
    2> 发送  使用完成后调用unregisterReceiver(myReceiver)中取消注册 
myReceiver = new MyBRReceiver();
        IntentFilter itFilter = new IntentFilter();
        itFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        registerReceiver(myReceiver, itFilter);

静态注册
    1> 自定义一个BroadcastReceiver,重写onReceive完成逻辑
    2> 在清单文件中注册BroadcastReceiver,添加开机广播的intent-filter,别忘了加上android.permission.RECEIVE_BOOT_COMPLETED的权限哦!
    3> 使用sendBroadcast(new Intent(""))发送广播
5.本地广播
    注意:本地广播无法通过静态注册方式来接受,相比起系统全局广播更加高效
    使用LocalBroadcastManager来管理广播
    1> 调用LocalBroadcastManager()获取实列
    2> 调用 .registerReceiver()注册
    3> 调用 .sendBroadcast()发送
    4> 调用 .unregisterReceiver()取消注册
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014505.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号