android四大组件——广播

14 篇文章 0 订阅

至高准则1:Intent在四大组件中起"桥梁"作用

至高准则2:安卓四大组件运行在主线程中,所以不能在其中做耗时操作。


广播的作用:打开其他应用的某个活动或者组件、发送消息等。

                    广播里面不应该做任何的耗时操作,广播打开活动需要intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


一、发送广播

无序广播&有序广播

无序广播:①不可被终止 ②数据不可被修改

有序广播:①可以被终止 ②数据可以被修改 ③监听广播FianlReceiver可以监听到数据是否被修改。

1.发送无序广播:和开启Activity类似,用intent来setAction。

    Intent intent = new Intent("包名 + 广播名");

    sendBroadcast(intent);

2.发送有序广播:

    Intent intent = new Intent("包名 + 广播名");

  sendOrderedBroadcast(intent); //接受有序广播的Receiver可以在intent-filter中设置优先级,优先级高的可以abortBroadcast()打断广播


二、接受广播(重点:intent-filter)

静态广播:应用程序未启动也可接收广播

动态广播:应用程序必须启动才可以接收广播,需要动态的注册和注销。

1.静态接收广播(Manifest + Java代码)

    ①创建一个广播接收者(右键工程包new)

    ②在清单文件下的receiver下>intent-filter下>action的name下添加要接收的广播

    ③接收到广播后,在广播接收者的onReceive方法中执行操作。

2.动态接收广播(Java代码中实现)

    ①registerReceiver(receiver,intentfilter); //注册广播接收者需要两个参数

    ②new一个intentfilter,并添加action接收需要的广播

    ③创建一个类继承BroadcastReceiver(没有在清单文件中注册,而是代码动态注册!),实现onReceive()方法

    ④销毁活动时,记得注销广播接收者:unregisterReceiver(receiver);


三、本地广播机制

优点:只在应用程序内部传递,安全性高。

原理:发送和接收都额外经过LocalBroadcastManager来实现,且只能动态注册。


本地广播管理器:LocalBroadcastManager manager = LocalBroadcastManager.getInstance(this);

发送:manager.sendBroadcast(intent)

接收:manager.registerReceiver(receiver,intentfilter);//注册

          manager.unregisterReceiver(receiver,intentfilter);//注销


四、系统广播一览(转自简书:https://www.jianshu.com/p/ca3d87a4cdf3)

其中,sd卡状态需要多配置一个data:“file”

          软件安装卸载需要多配置一个data:“package”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值