Android 开发艺术探索笔记(19)

广播的接收和发送过程

跟注册过程一样,ContextWrapper也是一个桥接模式,它将发送过程丢给了ContextImpl,,然后ContextImpl又向AMS发送了一个异步请求用于发送广播,AMS用broadcastIntent处理,里面调用了broadcastIntentLocked,这个方法里,首先广播不会对已停止的应用发送广播;其次会根据intent-filter查找出匹配的广播接收者并经过一系列的条件过滤,最终会将满足的广播接收在添加到BroadcastQueue中,接着BroadcastQueue就会将广播发送给相应的接收者。最后在InnerReceiver的onReceive中接收广播。

ContentProvider的工作过程

ContentProvider的onCreate要先于Application的onCreate,这里是启动过程:

这里写图片描述

启动完以后,外界就可以调用它的CRUD接口。这四个方法都是调用Binder来完成,外界无法直接访问ContentProvider。它只能通过AMS根据Uri来获取相应的ContentProvider的Binder接口IContentProvider,然后访问它。

这里写图片描述

Android的消息机制


消息机制主要是Handler,Handler的运行需要底层的MessageQueue和Looper支撑。
MessageQueue是消息队列,内部存储了消息的信息。但它的内部并不是真正的队列,而是单链表的数据结构存储消息信息。
Looper是处理queue的循环。Looper以无限循环的形式去访问MessageQueue,如果有消息就处理,如果没有就等待。Looper中还有一个概念就是ThreadLocal,它并不是线程,它的作用是在每个线程中存储数据。Handler创建的时候会采用当前线程的Looper来构造消息循环系统,而Handler的内部如何来获取当前线程的Looper呢?那就是通过ThreadLoacl了。ThreadLocal可以在不同的线程中互不干扰的提供数据,通过ThreadLocal可以轻松获取每一个线程的Looper。所以要使用Hanlder就必须要先为线程创建Looper。我们常用的主线程ActivityThread,它在创建时会初始化Looper,所以在主线程中默认可用Handler。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。

所以,长征路还长,大家还是好好地做个务实的程序员吧。

最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

(https://bbs.csdn.net/forums/f76c2498e3b04ae99081eaf6e6cf692c)**

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值