Dagger2+MVP+RxJava+Retrofit从放弃到入门

模板地址:https://github.com/xiongmaozhijin/WaterUserManager

Android端的技术变化虽然赶不上白菜的价格涨跌,但也是一天一个样。三天不读书,就跟不上脚步。但问题是,在不断的去所谓学习中,用时间换来了什么。是,讨厌这样的付出得不到应有的反馈。

MVC,MVP还是其他架构,都是为了解耦。把所有的代码组织的各司其职,一个碉堡一把机枪。这样,当要添加需求时,当要改变需求时,当要找到出现问题的地方时,啪啪几下,大概就能找到大致的位置。之前我的有些代码组织就差不多是MVP模式了,只不过不够彻底和少了个名分。View就专门负责UI的交互和变化,这部分由Activity或Fragment来承担;Model,就是专门提供数据的仓库,包括本地的数据和网络远程的数据;Presenter就是桥梁,也是干业务活的,负责响应View的操作,连接Model做业务工作。这样就显得稍清晰。在MVP架构中,View和Presenter是通过抽象接口进行交互的,当然这也是为了解耦。此即,MVP。在实践中,可以发现这种做法显得非常的繁琐。一个简单的功能,全部放到Activity中完成,好像显得也不是未尝不可。

Dagger2,那这个是什么呢?这个倒是不好理解。它是一个对象依赖注入的框架。什么意思?就是说,你按照Dagger2约定的规则来,你需要什么对象,由这个库提供给你,不用你自己生成。那这个库怎么会有自己想需要的对象呢?当然是,按照Dagger2的规则,由你自己提供啦。只不过不同的是,它集中在了一个地方提供,它可以按照层次提供各种依赖对象。在你需要使用的地方,inject注入一下,就可以自动获取了。那这个的好处是,解耦,集中管理,自动化。嗯,实践后,发现还是挺好使的。

RxJava,是Reactive Programming响应式编程的Java实现。什么是响应式编程?不太懂。RxJava的特点是流式操作,线程切换自由,逻辑清晰。比如说,我需要获取一组数据,先客户端判断是否有效用户,如果是则继续。如果数据本地有,就从本地取出;如果本地没有,则从网络取回,并保存到本地。如果常规的写法会是过程式的一段一段的;如果是Rx的写法,则是链在一起,把所有的逻辑组织在一起的流式写法。对于Android来说,改变UI需要在主线程中执行,而耗时的必须另起线程,这种需要线程切换的需求对于Rx来说,是大试牛刀,小菜一碟。所以,Rx也是种封装,然后加上自己定义了一系列的规则,最后使得编写业务变得简洁快速方便。这是矛盾的,因为需要识记新的规则。而识记的这些,最好的结果是“先闻道”,并有可能成为有用的经验。除此外,再无其他。

Retrofit,是对网络请求的封装。是,又是封装,还是封装。目的就是方便使用。那为什么不一开始就搞出个不错的请求框架来呢?今天张三,明天李四。今天网页上跑Java小程序;明天Java小程序上跑网页。有意思吗?不清楚。新瓶装旧酒,旧酒放新瓶,仿佛就像伊辛巴耶娃那样,我来负责创造记录,你们负责惊讶和膜拜吧。不时造出新的茴香豆的“”的写法,然后讨论哪种写法更加的工整。让那些穷酸秀才们夜半点灯去识记吧。对应HTTP请求,记得有本大象书,枯燥规范的介绍了全部一切。对于Retrofit,当然有时间有精力有想法时,可以去学习下作者是如何封装的。

待续……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android从入门到精通是一个较为庞大的话题,无法在短时间内详细覆盖所有内容。不过,我可以给你提供一个大致的学习路径和一些重要的主题,帮助你入门并逐步提升技能。 1. Java基础:Android开发主要使用Java语言,所以你需要对Java有一定的了解。学习Java的基本语法、面向对象编程、异常处理等。 2. Android基础知识:学习Android的核心组件,包括Activity、Fragment、Intent等,了解Android应用的生命周期和各个组件之间的交互。 3. 布局和视图:学习如何使用XML文件创建Android应用的界面布局,以及如何使用不同类型的视图(View)来构建用户界面。 4. 用户交互:学习如何处理用户的输入事件,包括点击按钮、滑动手势等。了解如何使用Toast、Dialog、Snackbar等来向用户显示信息。 5. 数据存储:学习如何使用SQLite数据库进行数据的持久化存储,以及如何使用SharedPreferences进行简单的数据存储。 6. 网络通信:学习如何使用HTTP协议发送和接收网络请求,以及如何解析JSON数据。了解常见的网络通信库,如OkHttp、Retrofit等。 7. 多媒体处理:学习如何使用Android提供的API来处理图片、音频和视频。了解如何使用Camera API进行拍照和录像。 8. 性能优化:学习如何优化Android应用的性能,包括减少内存占用、优化布局、优化网络请求等方面。 9. 安全性和权限管理:学习如何保护Android应用的数据安全,并了解如何处理用户权限请求和权限管理。 10. 第三方库和框架:学习如何使用常用的第三方库和框架来加快开发速度,如Glide、ButterKnife、Dagger等。 11. Material Design:学习如何使用Material Design风格来设计美观的用户界面,并了解Material Design的设计原则和组件。 12. 进阶主题:学习更高级的Android开发主题,如响应式编程(RxJava)、MVVM架构、测试和调试技巧等。 以上是一个大致的学习路径,你可以根据自己的兴趣和需求来选择深入学习的内容。同时,不断实践和项目开发也是提升技能的重要方式。希望这些信息对你有所帮助!如果你还有其他问题,可以继续提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值