zoukankan      html  css  js  c++  java
  • 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周围写标签就好

      

     

    还有一些广播可能需要

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

     

    我这边就

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

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

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

  • 相关阅读:
    String.Format( )用法
    Androidstudio中添加jar包的方法
    Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good
    aravel 之父 Taylor Otwell :我是如何工作的
    【码云周刊第 22 期】GO :互联网时代的 C 语言!
    2017 JavaScript 开发者的学习图谱
    【码云周刊第 29 期】构建高性能微服务架构
    SOA和微服务
    NET Core Web 应用部署到 Docker 中运行
    Expression Trees
  • 原文地址:https://www.cnblogs.com/aolong/p/13408020.html
Copyright © 2011-2022 走看看