Android广播

广播的概念:

    1.实现了不同的程序之间的数据传输与共享,因为只要是和发送广播的action相同的接受者都能接受这个广播。典型的应用就是android自带的短信,电话等等广播,只要我们实现了他们的action的广播,那么我们就能接收他们的数据了,以便做出一些处理。比如说拦截系统短信,拦截骚扰电话等等。

    2.起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。因为service是没有界面的,所以不能直接获得主程序中的控件,这样我们就只能在主程序中实现一个广播接受者专门用来接受service发过来的数据和通知了。

    广播分为标准广播和有序广播

        标准广播:多个广播接收器同时接收

                                   

        有序广播:一个一个有序接收

           

 

 

        而广播接收器需要注册,注册方法有两种,动态和静态;

        动态:在代码中注册,比较灵活;使用后可以销毁,不占用多余内存;特别是对于一些在8.0版本以上的隐式广播,动态注册可以显示,但是缺点就是只有当前程序启动并不被关闭才能使用。

        静态:在AndroidManifest.xml中注册,既然是静态的,那开机后在任何地方都可以显示,程序未启动也可以使用;那缺点很明显了,虚拟机开启,无时无刻都在使用,比较消耗内存,8.0隐式广播不能显示,只有修改版本或者修改注册方式才可以显示。

      以上的概念到底有啥用?

   下面用小例子给你解说

     例子一:用动态注册广播查询模拟器(手机)电量;

        既然是动态注册,那就得在程序中运行,那就得和活动扯上关系,只有跟活动有关系,才可能运行。

        去主活动的布局文件,默认的布局文件是一个布局加一个TextView,我们只需要改增加TextView的一个id就好(把从系统广播中得到的电量放到TextView中显示)

        

 

 

        然后在主活动中连接这个控件和id

        

 

 

 代码不附上了,看到我博客的你,如果想复习或者学习,希望能打一遍,加深记忆。

 

 这要怎样看出来呢,模拟器右下角的

            

 

 

 

 

这就是模拟器的系统电量,右上角的Charger Connection是设置手机USB是否连接的(就是模仿充不充电的,实例一升级版会用到)

 

 当我们拖动系统电量时,程序中监听到的电量值就变化。

这边有个让一部分代码生成方法的方法:选择要生成方法的代码,右击到Refactor,点击Extract

 

 

 

 

 

 

 接着输入方法名,就可以自动产生无参的方法了(为了让架构更加分明)

 

 

 

 实例一的升级版,在接收广播电量的同时,接收系统的USB连接情况;

  设置频道时 增加连接和未连接广播频道

 

 

 

 

  

 

把存储广播接收到的电量设置为全局变量

添加检测频道的if语句

如果usb连接,则提示连接,充电

不然,检测电量是否低于60

 

 

 

然后就是静态的注册

活动是需要注册的,那作为四大组件之一的广播也是可以注册的

使用静态的第一步,创建一个Class继承BroadcastReceiver

这个是为了检测应用的安装和卸载

 

第二步在AndroidManifest.xml中注册信息

  一般在Activity周围写标签就好

  

 

还有一些广播可能需要

 比如电量广播接收就需要,还有检测网络状态也需要其他的声明使用许可,有需要百度即可。

 

我这边就

 都提示了,至于为啥要提示这个包,为了知道这个是那个程序卸载了

几个小时的复习和敲打,完成了,最近都在复习以前的知识,写着项目,今天才开始学新的知识。

后面的标准和有序广播,后面再做详细介绍。

原文地址:https://www.cnblogs.com/aolong/p/13408020.html