美文网首页
做Android 开发这么久,还不明白 Android Fram

做Android 开发这么久,还不明白 Android Fram

作者: 像程序那样去思考 | 来源:发表于2022-11-23 21:40 被阅读0次

    Framework作为Android的框架层,为App提供了很多API调用,但很多机制都是Framework包装好后直接给App用的,如果不懂这些机制的原理,就很难在这基础上进行优化。

    从做Android的第一天起,你一定听过无数次关于Framework的讨论,也曾在这个版块被面试官吊锤N次。

    像启动监控、掉帧监控、函数插桩、慢函数检测、ANR监控,都需要比较深入的了解Framework,才能知道怎么去监控、利用什么机制监控、函数插桩插到哪里、反射调用该反射哪个类哪个方法哪个属性……

    比如,如果你深入了解了Android App的启动机制,做启动优化一定会更加得心应手:

    1. 定制什么样的StartingWindow?
    2. 什么时候可以拿到图片的宽高?
    3. DelayLoad怎么做才会更合适?
    4. Service什么时候启动可以不影响启动速度?
    5. Activity onResume回调的时候真的可见了么?
    6. ContentProvider会不会影响启动速度?为什么会影响?

    比如我们经常说的Handler、MessageQueue、Looper。看源码你就可以更好的理解那些概念:

    1. Thread和Handler的关系
    2. 为什么不能在子线程更新UI?
    3. idleHandler什么时候运行?
    4. 主线程为什么循环却不会卡死?
    5. ContentProvider、Broadcast、Service是怎么利用Message监控ANR的?

    比如说Android进程管理机制。AMS把Android进程按照一定的规则,设置不同的优先级,在内存比较低的时候,高优先级的App比低优先级的App更不容易被系统干掉!那么AMS是按照什么规则来设置优先级的呢?了解这些规则是不是可以提高App的存活率呢?这些都是可以通过熟读AMS的代码知道的。

    再比如说Activity启动的模式,可能你会熟练使用各种模式,但是如果你学习Framework中Activity和进程的管理,知道Activity栈和Task的管理。那么你会对这启动模式的使用更加深刻。

    再比如说View中的Hardware Layer,如果你只知道“在动画开始前将View设置为Hardware/Software Layer,做完动画再设置回去”,那么你会发现,在有些场景下,这么做会让动画变流畅,但是某些情况下动画会变得更差。如果不了解View的Hardware/Software Layer实现机制,盲目地给所有动画都这么设置,那么性能问题是在所难免的。

    还有Android的卡顿掉帧问题,很多文章都说卡顿是由于主线程耗时造成的,这其实只是一部分,其他的比如:

    • RenderThread耗时也会导致卡顿
    • Binder通信耗时也会导致卡顿
    • 60fps下没问题的App 90fps或者120fps下也可能会卡顿
    • 有时候低内存下你主线程读个文件可能都会导致卡顿

    真正明白了卡顿的原理,再面对卡顿问题也不会再手足无措。

    正所谓知其然知其所以然,API 只是 Android 开发的一部分,底层的实现庞大而又复杂,不用心去读源码很难将知识点深入理解。

    Android Framework到底怎么学? 成为了很多人迫在眉睫的问题,关于如何学习Android Framework开发知识,仍在迷茫的开发们可以参考这份进阶文档《Android Framework 源码开发手册》,今天在这里分享给大家:

    获取方法: 关注公众号<Android苦做舟> 或 联系作者 领取~

    Handler

    • 宏观理论分析与Message源码分析
    • MessageQueue的源码分析
    • Looper的源码分析
    • handler的源码分析
    • ……

    Binder

    • 学习Binder前必须要了解的知识点
    • ServiceManager中的Binder机制
    • 系统服务的注册过程
    • ServiceManager的启动过程
    • 系统服务的获取过程
    • Java Binder的初始化
    • Java Binder中系统服务的注册过程
    • ……

    Zygote

    • Android系统的启动过程及Zygote的启动过程
    • 应用进程的启动过程
    • ……

    AMS

    • Activity生命周期管理
    • onActivityResult执行过程
    • AMS中Activity栈管理详解
    • ……

    PMS

    • PMS的启动过程和执行流程
    • APK的安装和卸载源码分析
    • PMS中intent-filter的匹配架构
    • ……

    WMS

    • WMS的诞生
    • WMS的重要成员和Window的添加过程
    • Window的删除过程
    • ……

    获取方法: 关注公众号<Android苦做舟> 或 联系作者 领取~

    相关文章

      网友评论

          本文标题:做Android 开发这么久,还不明白 Android Fram

          本文链接:https://www.haomeiwen.com/subject/pvctfdtx.html