android--BroadCast

一 接收广播

系统广播:定义BroadcastReceiver 运行在主线程,在onReceive(Content c,Intent intent)中操作。
静态注册 未启动也能收到相应的广播 android:enabled=“true” 表示可以接收外部广播
动态注册 指定action,应用启动时才能获得广播

android.net.conn.CONNECTIVITY_CHANGED      //网络变化
intent.ACTION_AIRPLANE_MODE_CHANGED        //飞行模式打开/关闭
intent.ACTION_BATTERY_CHANGED              //电量发生变化时,充电时
intent.ACTION_BATTERY_LOW                  //电量过低
intent.ACTION_BATTERY_OKAY                 //电量充足
intent.ACTION_BOOT_COMPLETED               //拍照确定按钮 硬件按钮
intent.ACTION_CLOSE_SYSTEM_DIALOGS         //屏幕锁屏
intent_ACTION_CONFIGURATION_CHANGED        //系统设置改变 如语言 设备方向
intent_ACTION_HEADSET_PLUG                 //插入耳机
intent_ACTION_PACKAGE_ADDED                //应用安装成功
intent_ACTION_PACKAGE_REMOVED              //应用删除
intent_ACTION_SCREEN_ON /OFF               //屏幕打开、关闭
......
例: IntentFIlter filter=new IntentFilter();
    filter.addAction("android.net.conn.CONNECTIVITY_CHANGED");
    registerReceiver(广播接收器,filter);

二 发送广播

.
有序 sendOrderBroadcase() 在注册时指定 android:priority 的优先级, abortBroadcast()截断广播
标准 sendBraodcast

三 本地广播

上面发送的都是全局广播,其他应用也能收的到,为了避免这种情况需要发送本地广播,只能app内部收到广播
LocalBroadcastManager 发送广播 manager.sendBroadcast() 动态注册manager.registerReceiver();

其他

前台广播&后台广播:查资料是说根据Intent 的flag不同会加入不同的队列中。默认不带,所以一般发送的都是后台广播。

intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);//使用前台广播

ANR:后台 60s 前台10s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值