![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
architectural thinking
文章平均质量分 79
0 and 1
To be better
展开
-
Android MVVM-编程思想3(封装基类BaseMvvmActivity,BaseMvvmFragment)
上一小节讲解了DataBinding,ViewModel,LiveData 的入门使用,这一节把这些初始化,通用设置封装到基类中。分析UserActivity可以抽取的逻辑有哪些?Activity 需要持有ViewDataBinding,和ViewModel的引用,这两个声明和初始化过程可以抽取到基类。public class UserActivity extends AppCompatAc...原创 2019-12-23 15:59:21 · 5095 阅读 · 4 评论 -
Android MVVM-编程思想2(入门实战MVVM,DataBinding,ViewModel,LiveData)
通过一个小的登录功能模块案例,帮助大家了解MVVM。最终实现一个MVVM通用框架。代码完成之后会放到github上。(如有错误之处,请在评论区指出,谢谢。如果感觉写的不错,请点赞,关注,谢谢。)上一个小节,只是理论介绍了MVVM,DataBinding,ViewModel,LiveData,这一小节,讲解一下他们的使用方式。如果已经对这些基础知识很了解,可以直接看下一节。目录:Android...原创 2019-12-20 19:04:40 · 849 阅读 · 0 评论 -
Android MVVM-编程思想1(入门介绍MVVM,DataBinding,ViewModel,LiveData)
前言通过一个小的登录功能模块案例,帮助大家了解MVP。最终实现一个结合Rxjava2,Retrofit 的MVP通用框架。代码放到github上。(如有错误之处,请在评论区指出,谢谢。如果感觉写的不错,请点赞,关注,谢谢。)目录:Android MVVM-编程思想1(MVVM优缺点,入门DataBinding)了解MVP编程思想的同学都知道MVP一个最大的缺点就是需要写大量接口。没接触过M...原创 2019-12-19 17:55:55 · 1070 阅读 · 0 评论 -
RxJava编程思想3-(实现简易版Rxjava,如何实现线程切换)
如何做线程切换?如何实现?其实就是对被观察者的数据处理过程进行装饰,设计思想跟操作符一样,使用装饰者模式,对被被观察者的数据处理进行线程装饰。操作起来:先想一下,线程切换的几种场景:指定新线程,指定io线程,指定Android主线程等。定义:抽象,约定线程的公共行为public abstract class Scheduler { public abstract void sch...原创 2019-12-12 19:31:41 · 323 阅读 · 0 评论 -
RxJava编程思想2-(实现简易版Rxjava,如何实现操作符?)
前言已经使用rxjava两个月了,觉得rxjava特别好用,爱不释手。本文目的是通过几百行的代码,帮助大家理解rxjava中的链式调用,操作符,线程切换是如何实现的。如果有写的不对的地方欢迎在评论区留言,如果觉得写的可以,请点赞,关注,谢谢。代码链接: github目录:RxJava编程思想1-(实现简易版Rxjava,基本的链式调用)操作符如何实现?我们先实现最简单的操作符— map操...原创 2019-12-12 19:29:20 · 228 阅读 · 0 评论 -
Android MVP-编程思想4(AOP思想-动态代理运用,反射创建M层实例对象)
上一节讲解了如何处理内存泄露,如何做基类封装。这一节学习如何使用动态代理处理重复逻辑。在第二小节中我们已经提到了下面的问题:网络请求是耗时操作,我们 Presenter 层持有了 View 层的引用,也就是 Activity 的引用,在网络请求过程中,Activity被用户或者系统关闭,这时 View 相当于被摧毁了,如果不进行判断 View 引用是否为空,当数据返回时,就会造成空指针异常,所以...原创 2019-12-12 10:38:03 · 354 阅读 · 0 评论 -
Android MVP-编程思想7(为什么使用代理类抽取通用方法而不是工具类?,基类BaseMvpFragment)
上一小节使用注解和反射优化了P层依赖注入的方式。这一节学习基类BaseMvpFragment,代理类抽取通用方法.BaseMvpFragment 和BaseMvpActivity 都属于V层的封装,有很多通用的代码,比如注入P层的代码。如何把这些代码抽离复用呢? 很多程序员首先想到的就是做成工具类。当然这种方式也可以,但是总是感觉不优雅。因为,当很多地方都需要使用的情况下我们才会做成工具类,而且...原创 2019-12-12 19:10:04 · 417 阅读 · 0 评论 -
Android MVP-编程思想6(依赖注入多个P层方式优化---注解,反射)
上一小节就是讲解多个P的处理思想。非常简单,使用容器存储就Ok了。这一小节,讲解使用如何使用注解和反射形式创建P的实例对象。目的有两个(1)是减少基类(父类)和子类的直接依赖。基类不需要通过createPresenter方式 注入P的引用,(2)减少代码,去掉繁琐的创建操作。每次都要实现createPresenter()方法,这种依赖注入的方式能否优化?解决思路一句话:注解扫描,反射创建实例化...原创 2019-12-12 13:17:20 · 567 阅读 · 0 评论 -
Android MVP-编程思想5(如何处理多个P层的问题?)
实际开发中,当业务相对复杂的应用,我们的 Presenter 层并不是只一个,会存在View 与 Presener 层的一对多的关系。显示之前的代码设计不能满足这种需求。回顾一下之前的设计(一对一)之前是在BaseMvpActivity 中持有P层的引用(当时假设只有一个),BaseMvpActivity提供了createPresenter抽象方法,让子类实现. 通过这种方式注入P的实例对象。...原创 2019-12-12 11:17:20 · 1105 阅读 · 0 评论 -
Android MVP-编程思想3(MVP-内存泄露问题处理,基类封装,有没有必要再使用软引用?)
本篇是接着上一篇写的。但是并不需要按照顺序阅读,对MVP已经有一定理解和实践的可以直接阅读。如果没有接触过MVP请先阅读第一小节这一节主要实现两个小目标,1.内存泄露问题处理,2.基类抽取封装第一个问题,内存泄露,为什么会内存泄露?Activity又持有P层的引用,P持有V层(Activity)的强引用,循环引用了(所以即使在onDestory中设置mPresenter=null 也不会被回...原创 2019-12-11 17:47:38 · 470 阅读 · 0 评论 -
Android MVP-编程思想2(代码实现初级版)
MVP 实战那么我们下面就要将这个类中的代码改写为 MVP 的写法,回顾上面提及的 MVP 架构的思想,它是将 View 层与 Model 层彻底隔离,意味着 View 和 Model 都不再持对方的引用,它们通过一个第三者 Presenter 来代理事物的传递,所以 Presenter 层会持有 Model 与 View 层的引用,这是第一步。第二步,是将它们之间的联系抽象出来,以接口的方式...原创 2019-12-11 17:47:04 · 310 阅读 · 0 评论 -
Android MVP-编程思想1(什么是MVC-MVP-MVVM模式?)
MVC和MVP先讲一下mvcM-数据层:数据库,网络数据V-视图层:layout,自定义viewC-控制层: 一般是Acitivity而MVP则是对MVC的进一步改造,以Andorid为例,实际上在MVC中很难区分Activity到底应该处于V还是C的角色,因为activity即包含了界面也包含了一部分逻辑处理。遇到逻辑复杂的应用,一个activity可能写到3,5千行。维护起来特别困...原创 2019-12-11 17:46:25 · 350 阅读 · 0 评论 -
EventBus编程思想-实现简易版EventBus
这是编程思想系列的第二篇,这里挑选用的比较多的EventBus讲解一下,不纠结实现细节。先理解设计思想,这也是研究学习开源框架的第一步。一个开源框架的出现肯定是有原因的,便捷,性能基本离不开这两点。而EventBus设计的初衷应该是为了便捷。回想自己为什么要使用EventBus就明白了。简单提两句组件通信方式Intent:使用它实现组件跳转,并且能携带参数,但只能携带少量数据,同时在跨组件通...原创 2019-12-03 15:12:16 · 262 阅读 · 0 评论 -
RxJava编程思想1-(实现简易版Rxjava,如何基本功能和链式调用?)
前言已经使用rxjava两个月了,觉得rxjava特别好用,爱不释手。本文目的是通过几百行的代码,帮助大家理解rxjava中的链式调用,操作符,线程切换是如何实现的。记得代码自己敲一遍才能理解的更深刻。Rxjava涉及的几个概念Observable :被观察者,用来生产发送事件;Observer:观察者,接收被观察者传来的事件;Data:数据,被观察者发出数据并传递给观察者;(数据传递过...原创 2019-11-28 19:04:45 · 388 阅读 · 0 评论