zoukankan      html  css  js  c++  java
  • (十八)广播机制(自定义广播事件&发送自定义广播&广播接受者优先级)

    一、可以发送两种类型的广播。一种是有序广播;一种是无序广播。

          无序广播的特点:所有的广播接收者都可以接收到广播。

          有序广播的特点:根据广播的优先级接收广播,高优先级先接收,并且高优先级的广播可以利用abortBroadcast终止广播的传送。sendOrderedBroadcast(intent, null, new MyReceiver(), new Handler(), 0, null, null)指定了接收者的广播,不会由于abortBroadcast终止广播的传送而接收不到广播。

          处理器的注册:

          1、 在代码中用函数代码动态的方式注册。动态注册的处理器必须用代码动态的销毁,每次用来处理消息的就一个实例对象

          2、 在配置文件里面静态注册,静态注册有个特点,那就是一旦注册就会一直存在于系统里面,无论应用是否关闭或开关机。(简直就是一个流氓软件病毒啊~)。静态注册每次有处理消息就由系统new一个处理器处理,并销毁

    二、注意:当如果要进行的操作需要花费比较长的时间,则不适合放在BroadcastReceiver中进行处理

     “在 Android 中,程序的响应( Responsive )被活动管理器( Activity Manager )和窗口管理器( Window Manager )这两个系统服务所监视。当 BroadcastReceiver 在 10 秒内没有执行完毕,Android 会认为该程序无响应。所以在 BroadcastReceiver 里不能做一些比较耗时的操作,否侧会弹出ANR ( Application No Response )的对话框。如果需要完成一项比较耗时的工作,应该通过发送Intent 给 Service ,由 Service 来完成。而不是使用子线程的方法来解决,因为 BroadcastReceiver 的生命周期很短(在 onReceive() 执行后 BroadcastReceiver 的实例就会被销毁),子线程可能还没有结束BroadcastReceiver 就先结束了。如果 BroadcastReceiver 结束了,它的宿主进程还在运行,那么子线程还会继续执行。但宿主进程此时很容易在系统需要内存时被优先杀死,因为它属于空进程(没有任何活动组件的进程)。 ”

  • 相关阅读:
    生产环境Crontab专业实例
    Linux系统定时任务介绍
    Linux文件属性改变命令chown-chgrp-chattr-lsattr实践
    Linux命令总结
    Linux特殊权限位suid、sgid深度详细及实践
    企业场景-网站目录安全权限深度讲解及umask知识
    shell简介
    Nginx模块及配置虚拟主机
    安装Nginx
    Nginx简介
  • 原文地址:https://www.cnblogs.com/fuyanan/p/4098199.html
Copyright © 2011-2022 走看看