• Android 2014年1月22日


    一.广播优先顺序

    Android广播有两个很重要的要素:

       1 广播 - 用于发送广播

             有序广播  -  被广播接收器接收后,可被终止,无法往下继续传达。         典型代表:短信广播

             普通广播  -  发送至每一个已经注册(订阅)的广播接收器,无法被终止。 典型代表:开机启动广播

       2 广播接收器 - 用于订阅广播后接收广播

             静态注册广播 - 在AndroidManifest.xml中设置,程序不用启动亦可接收。 典型代表:很多开机启动的APP,都是接收开机启动广播带起服务的。

             动态注册广播 - 代码中注册广播,程序未启动时,无法接收广播。             典型代表:Go短信,将Go短信强行停止,Go短信无法接收短信。

     广播注册过程

    接收广播顺序过程

    在ActivityManagerService处理广播,当广播为有序广播时,将动态广播接收器和动态广播接收器合并起来,形成最终的有序广播接收顺序。
       上述的规则1排序为:
                                    1 优先级高的先接收
                                    2 同优先级的动静态广播接收器,动态优先于静态
                                    3 同优先级的动态广播接收器  或者同优先级的静态广播接收器,按照图1 的流程注册顺序。
                                       即静态:先扫描的大于后扫描的,动态:先注册的大于后注册的。
      
       当广播为普通广播时,规则2排序为:
                                    1 无视优先级,动态广播接收器优先于静态广播接收器
                                    2 同规则1排序的第3点
    二.基础问答
    是谁控制着Activity的生命周期?
    答:
    是谁在背后操控这那个不靠谱的应用程序堆栈?
    答:
    为什么“程序无响应”总是冷不丁的 冒出来,他们来自哪里?
    为什么我一定要在onPause里保存敏感数据?
     
    该死的Binder,黑色面纱下面的你到底是男是女?
    是谁杀死了我的 Service,怎样才能幸免遇难?
    Activity被销毁后那些仍在运行的线程会怎样?
    按下BACK键后,一定会回到主屏吗?
    有人再说Looper和 Handler,一个进程只能有一个Looper是正的吗?
     
     
  • 相关阅读:
    pat甲级1004 Counting Leaves
    pat甲级1003 Emergency
    pat甲级1002 A+B for Polynomials
    pat甲级1001 A+B Format
    【转载】sql注入之入门
    JavaScript基础学习笔记
    django 安装
    python web编程CGI
    python urllib库
    python数据库编程
  • 原文地址:https://www.cnblogs.com/chuckTsao/p/3529658.html
Copyright © 2020-2023  润新知