zoukankan      html  css  js  c++  java
  • BroadcastReceiver工作原理

    --摘自《android插件化开发指南》

    1.动态注册过程是注册Receiver并通知AMS,发送内容包括IntentFilter、一个实现了IIntentReceiver接口的Binder对象、activity所在的进程。

    2.AMS收到消息后,会把所有Receiver保存在一个列表中

    3.静态Receiver是在App安装的时候注册,PMS会解析AndroidManifest中的四大组件信息

    4.动态Receiver和静态Receiver分别存在AMS不同的变量中,发送广播时,会把两种Receiver合并到一起,其中动态的排在静态的前面,所以动态Receiver永远优先于静态Receiver收到消息

    5.Android系统每次启动时,都会重新安装所有的apk

    6.音乐类播放器用到Receiver的地方很多,比如前台的activity,点击按钮,会给后台service发送一个receiver,后台做相应操作

    注册过程

    发送广播流程

    第一步:Service发送广播给AMS

    参数Intent携带了filter,告诉AMS什么样的Receiver可以接收这个广播

    第二步:AMS接收广播,发送广播

    Receiver分为无序Receiver和有序Receiver,所以广播发送队列也分为两个

    第三步:APP处理广播

    AMS将注册时候的IIntentReceiver接口对象传回给客户端

    综上,客户端注册Receiver到AMS和AMS发送广播到客户端,都是跨进程通信的过程

    广播的种类分为无序广播、有序广播和粘性广播。有序广播可以指定优先级。

    粘性广播比如电量提醒,发出后,还能一直存在,未来的注册者也能收到这个广播。

  • 相关阅读:
    Flask的jinja2模板中自定义过滤器的使用
    Django的CBV方式讲解
    【Flask】 Jinja2模板语言
    如何把excel数据导入数据库
    在flask中使用jsonify和json.dumps的区别
    flask request 获取json内容2种方式
    flask装饰器route实现路由功能理解
    ASP.NET—016:ASP.NET中保存文件对话框
    子查询(章节摘要)
    今年股票注定有一波行情
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/10084087.html
Copyright © 2011-2022 走看看