美文网首页Android
Android详解(三)框架源码分析

Android详解(三)框架源码分析

作者: liuhuiAndroid | 来源:发表于2017-07-02 22:27 被阅读24次

拆各种轮子,学习各种思想,模仿各种造轮子
Android 开发中有什么经典的轮子值得自己去实现一遍?
如何正确使用开源项目?
===================

  • ☐ EventBus实现原理
  • ☐ ThreadLocal是什么

彻底理解ThreadLocal

  • ☐ handler实现机制(很多细节需要关注:如线程如何建立和退出消息循环等等)

Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
Android异步消息处理机制完全解析,带你从源码的角度彻底理解

  • ☐ handler发消息给子线程,looper怎么启动

Handler总是依附于创建时所在的线程,所以你在子线程A里创建了一个Handler,不管在任何其它地方使用这个Handler去发送消息时,最后肯定会在子线程A里去处理这个消息

  • ☐ Handler用法

Android Handler 异步消息处理机制的妙用 创建强大的图片加载类
Android IntentService完全解析 当Service遇到Handler

  • ☐ handler内存泄露

Android App 内存泄露之Handler

  • ☐ HandlerThread实现

Android HandlerThread 完全解析

  • ☐ ButterKnife 源码分析

ButterKnife 源码分析

  • ☐ 解决运行时危险权限方案源码分析

AndPermission
RxPermissions

  • dagger2 学习和源码分析 [ˈdægə(r)] 匕首; 短剑;用剑刺;

Android:dagger2让你爱不释手-基础依赖注入框架篇

  • Inject主要是用来标注目标类的依赖和依赖的构造函数
  • Component它是一个桥梁,一端是目标类,另一端是目标类所依赖类的实例,它也是注入器(Injector)负责把目标类所依赖类的实例注入到目标类中,同时它也管理Module。
  • Module [ˈmɒdju:l] 和Provides是为解决第三方类库而生的,Module是一个简单工厂模式,Module可以包含创建类实例的方法,这些方法用Provides来标注

Android:dagger2让你爱不释手-重点概念讲解、融合篇

  • 创建类实例级别Module维度要高于Inject维度。

Android:dagger2让你爱不释手-终结篇

  • dagger2进行的一次依赖注入的步骤:
    步骤1:查找Module中是否存在创建该类的方法。
    步骤2:若存在创建类方法,查看该方法是否存在参数
    步骤2.1:若存在参数,则按从步骤1开始依次初始化每个参数
    步骤2.2:若不存在参数,则直接初始化该类实例,一次依赖注入到此结束
    步骤3:若不存在创建类方法,则查找Inject注解的构造函数,看构造函数是否存在参数
    步骤3.1:若存在参数,则从步骤1开始依次初始化每个参数
    步骤3.2:若不存在参数,则直接初始化该类实例,一次依赖注入到此结束

Android常用开源工具(1)-Dagger2入门

  • 一个完整的Module必须拥有@Module与@Provides注解
  • 如果Module只有有参构造器,则必须显式传入Module实例。
  • 添加多个Module的三种方式:
    ①@Component(modules={××××,×××}) 添加多个modules
    ②@Module(includes={××××,×××})
    ③@Component(dependencies = xxx)

Android常用开源工具(2)-Dagger2进阶

  • 如果两个Component间有依赖关系,那么它们不能使用相同的Scope
  • 注意事项 坑 :
    1 - component的inject方法接受父类型参数,而调用时传入的是子类型对象则无法注入
    2 - component关联的modules中不能有重复的provide
    3 - module的provide方法使用了scope,那么component就必须使用同一个注解
    4 - module的provide方法没有使用scope,那么component和module是否加注解都无关紧要,可以通过编译
    5 - component的dependencies与component自身的scope不能相同,即组件之间的scope不同
    6 - singleton的组件不能依赖其他scope的组件,只能其他scope的组件依赖singleton的组件
    7 - 没有scope的component不能依赖有scope的component
    8 - 一个component不能同时又多个scope(Subcomponent除外)
    9 - @Singleton的生命周期依附于component,同一个module provide singleton,不同component也是不一样

Android三级联动wheel代码分析(一)

Log最佳实践
Android 从StackTraceElement反观Log库

  • ☐ Activity中切换不同状态显示页面

Android 多状态加载布局的开发 Tips 我觉得写的很好
StatefulLayout
progress-activity

  • ☐ 文件下载库

FileDownloader

相关文章

网友评论

    本文标题:Android详解(三)框架源码分析

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