Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • 学习小结

    post by onelong / 2016-12-17 21:41 Saturday [android]
    最近一直想聊一聊Android的那些事,对于android,想起来都荒废了一年多了,这些年更新的技术都不曾折腾过。这一年来所有折腾的重点是iOS,最近突然想补一补那些错过的事情,于是拿起来折腾了一个月左右,渐渐的觉得精力远不如从前了,也是这样不得不思考是不是应该专注一门呢?学习的都不是什么新技术,都是现在看着比较流行的技术。例如dagger2、rxjava2、rxandroid2、rxlifecycle2、retrofit2、 okhttp3、gson/jackjson、glide/picasso、Databinding等。今年折腾过Spring,然后理解Dagger2的时候还是比较容易的,一个框架的基础思想“依赖注入,控制反转”。在以往的日子里面,一直不喜欢用注解了,因为一直觉得注解是运行时反射实现的,效率不高,尤其是在android上,今年年初的时候就有人问我,Dagger、RoboGuice和ButterKnife都是用注解的,有什么不同呢,其实retrofit2也是使用注解的,Dagger和RoboGuice开始的确是运行时反射的,但是为什么还是那么多人用呢,软件开发有时候考虑的不仅仅是性能,还有架构和可维护性,在java的世界里面,spring是行业的标配。Dagger和RoboGuice是移动领域的spring,后来Google重写了Dagger,也是这样由运行时的变成了编译时处理的注解了。这样的话,对性能影响非常小。除了Dagger2,还有ButterKnife都是编译时处理注解的,只是通过注解处理器生成相应的java代码。Roboguice 在运行时利用反射进行依赖注入,性能不好,不再更新了,Dagger 利用编译期的注解处理来生成依赖注入的代码,尽可能的减少了反射的使用,ButterKnife 只是View绑定,预处理注解,只是View绑定,与框架无关。对于View的绑定,Databinding逐渐成熟了,一年前就想用上了,碍于技术人员和项目进度的要求,最终没有用上了。对于retrofit2,虽然使用了反射和动态代理,但是对使用者更友好。okhttp3面向切面的编程框架,使用拦截器在中间过程定制个性化需求。至于rxjava2、rxandroid2、rxlifecycle2相关的东西,主要是用于组件之间解耦。具体的分析就不深入说了,很多测试代码都放在GitHub了。 
    https://github.com/OnelongX/GoApp2
    https://github.com/OnelongX/HttpClient  java项目
    https://github.com/OnelongX/Databinding
    https://github.com/OnelongX/JsonTest 
    感兴趣的可以看看。

    引用地址:
     

    我要评论