6 0 and 1

尚未进行身份认证

我要认证

To be better

等级
TA的排名 3k+

Android MVVM-编程思想3(封装基类BaseMvvmActivity,BaseMvvmFragment)

上一小节讲解了DataBinding,ViewModel,LiveData 的入门使用,这一节把这些初始化,通用设置封装到基类中。分析UserActivity可以抽取的逻辑有哪些?Activity 需要持有ViewDataBinding,和ViewModel的引用,这两个声明和初始化过程可以抽取到基类。public class UserActivity extends AppCompatAc...

2019-12-23 15:59:21

Android MVVM-编程思想2(入门实战MVVM,DataBinding,ViewModel,LiveData)

通过一个小的登录功能模块案例,帮助大家了解MVVM。最终实现一个MVVM通用框架。代码完成之后会放到github上。(如有错误之处,请在评论区指出,谢谢。如果感觉写的不错,请点赞,关注,谢谢。)上一个小节,只是理论介绍了MVVM,DataBinding,ViewModel,LiveData,这一小节,讲解一下他们的使用方式。如果已经对这些基础知识很了解,可以直接看下一节。目录:Android...

2019-12-20 19:04:40

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

RxJava编程思想3-(实现简易版Rxjava,如何实现线程切换)

如何做线程切换?如何实现?其实就是对被观察者的数据处理过程进行装饰,设计思想跟操作符一样,使用装饰者模式,对被被观察者的数据处理进行线程装饰。操作起来:先想一下,线程切换的几种场景:指定新线程,指定io线程,指定Android主线程等。定义:抽象,约定线程的公共行为public abstract class Scheduler { public abstract void sch...

2019-12-12 19:31:41

RxJava编程思想2-(实现简易版Rxjava,如何实现操作符?)

前言已经使用rxjava两个月了,觉得rxjava特别好用,爱不释手。本文目的是通过几百行的代码,帮助大家理解rxjava中的链式调用,操作符,线程切换是如何实现的。如果有写的不对的地方欢迎在评论区留言,如果觉得写的可以,请点赞,关注,谢谢。代码链接: github目录:RxJava编程思想1-(实现简易版Rxjava,基本的链式调用)操作符如何实现?我们先实现最简单的操作符— map操...

2019-12-12 19:29:20

Android MVP-编程思想7(为什么使用代理类抽取通用方法而不是工具类?,基类BaseMvpFragment)

上一小节使用注解和反射优化了P层依赖注入的方式。这一节学习基类BaseMvpFragment,代理类抽取通用方法.BaseMvpFragment 和BaseMvpActivity 都属于V层的封装,有很多通用的代码,比如注入P层的代码。如何把这些代码抽离复用呢? 很多程序员首先想到的就是做成工具类。当然这种方式也可以,但是总是感觉不优雅。因为,当很多地方都需要使用的情况下我们才会做成工具类,而且...

2019-12-12 19:10:04

Android MVP-编程思想6(依赖注入多个P层方式优化---注解,反射)

上一小节就是讲解多个P的处理思想。非常简单,使用容器存储就Ok了。这一小节,讲解使用如何使用注解和反射形式创建P的实例对象。目的有两个(1)是减少基类(父类)和子类的直接依赖。基类不需要通过createPresenter方式 注入P的引用,(2)减少代码,去掉繁琐的创建操作。每次都要实现createPresenter()方法,这种依赖注入的方式能否优化?解决思路一句话:注解扫描,反射创建实例化...

2019-12-12 13:17:20

Android MVP-编程思想5(如何处理多个P层的问题?)

实际开发中,当业务相对复杂的应用,我们的 Presenter 层并不是只一个,会存在View 与 Presener 层的一对多的关系。显示之前的代码设计不能满足这种需求。回顾一下之前的设计(一对一)之前是在BaseMvpActivity 中持有P层的引用(当时假设只有一个),BaseMvpActivity提供了createPresenter抽象方法,让子类实现. 通过这种方式注入P的实例对象。...

2019-12-12 11:17:20

Android MVP-编程思想4(AOP思想-动态代理运用,反射创建M层实例对象)

上一节讲解了如何处理内存泄露,如何做基类封装。这一节学习如何使用动态代理处理重复逻辑。在第二小节中我们已经提到了下面的问题:网络请求是耗时操作,我们 Presenter 层持有了 View 层的引用,也就是 Activity 的引用,在网络请求过程中,Activity被用户或者系统关闭,这时 View 相当于被摧毁了,如果不进行判断 View 引用是否为空,当数据返回时,就会造成空指针异常,所以...

2019-12-12 10:38:03

Android MVP-编程思想3(MVP-内存泄露问题处理,基类封装,有没有必要再使用软引用?)

本篇是接着上一篇写的。但是并不需要按照顺序阅读,对MVP已经有一定理解和实践的可以直接阅读。如果没有接触过MVP请先阅读第一小节这一节主要实现两个小目标,1.内存泄露问题处理,2.基类抽取封装第一个问题,内存泄露,为什么会内存泄露?Activity又持有P层的引用,P持有V层(Activity)的强引用,循环引用了(所以即使在onDestory中设置mPresenter=null 也不会被回...

2019-12-11 17:47:38

Android MVP-编程思想2(代码实现初级版)

MVP 实战那么我们下面就要将这个类中的代码改写为 MVP 的写法,回顾上面提及的 MVP 架构的思想,它是将 View 层与 Model 层彻底隔离,意味着 View 和 Model 都不再持对方的引用,它们通过一个第三者 Presenter 来代理事物的传递,所以 Presenter 层会持有 Model 与 View 层的引用,这是第一步。第二步,是将它们之间的联系抽象出来,以接口的方式...

2019-12-11 17:47:04

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

热修复方案-设计思想

什么是热修复?存在的意义?简单来讲,热修复就是为了修复线上问题而提出的修补方案,程序修补过程无需重新发版,软件发布之后,总会出现一些Bug,这个时候就需要去解决bug然后测试,并打渠道包在各大应用市场上发布,这样就会耗费大量的人力物力。几种热修复方案1、底层替换方案底层替换方案限制颇多,但时效性最好,加载轻快,立即见效。代表:支付宝的Andfix2、类加载方案类加载方案时效性差,需要...

2019-12-04 17:39:30

EventBus编程思想-实现简易版EventBus

这是编程思想系列的第二篇,这里挑选用的比较多的EventBus讲解一下,不纠结实现细节。先理解设计思想,这也是研究学习开源框架的第一步。一个开源框架的出现肯定是有原因的,便捷,性能基本离不开这两点。而EventBus设计的初衷应该是为了便捷。回想自己为什么要使用EventBus就明白了。简单提两句组件通信方式Intent:使用它实现组件跳转,并且能携带参数,但只能携带少量数据,同时在跨组件通...

2019-12-03 15:12:16

RxJava编程思想1-(实现简易版Rxjava,如何基本功能和链式调用?)

前言已经使用rxjava两个月了,觉得rxjava特别好用,爱不释手。本文目的是通过几百行的代码,帮助大家理解rxjava中的链式调用,操作符,线程切换是如何实现的。记得代码自己敲一遍才能理解的更深刻。Rxjava涉及的几个概念Observable :被观察者,用来生产发送事件;Observer:观察者,接收被观察者传来的事件;Data:数据,被观察者发出数据并传递给观察者;(数据传递过...

2019-11-28 19:04:45

GroupClass-Describing experiences

CorrectionsYou said: Recently I want to lose weight.Rather say: I recently started going to the gym, because I want to lose weight.You said: In start November this year…Rather say: In the beginni...

2019-11-26 22:24:33

GroupClass-Child Dreams

I dreamed of having a flower shop when I grew up.I dreamed of living near to the sea.I dreamed of traveling the world and living in a quiet city.Vocabularyadventuroushectic(too busy)peacefulbo...

2019-11-19 21:39:56

GroupClass-Eating out

Vacabularysmell, taste, feel, look/see, drinkdelicious/yummy, horrible, strange/weird, oily, spicy, sweet, salty, bitter, rich, bland, stale, overcookedbiang biang mian noodles

2019-11-17 21:45:37

GroupClass-Talking about travel experience

vocabularyvisited means-had gone to spend time with someone or someplaceI’ve seen the Mona Lisa when I visited the Louvre in Parisseen means-had spent time looking at or watching something.enco...

2019-11-15 22:50:41

android studio升级到3.5.1,老项目androidannotations 框架编译不通过

androidStudio 升级老项目编译不通过是很常见的事情。处理步骤根据编译报错日志:利用修改相关Glade文件(利用好搜索引擎)这里只记录特殊处理的问题(网上资料较少的问题,常规问题就不重复其他文章了)如果老项目中使用了androidannotations 框架,升级之后需要做相关配置老项目的配置使用apt的地方全部去掉, apply plugin: ‘android-apt’同...

2019-11-14 16:13:24

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享小兵
    分享小兵
    成功上传3个资源即可获取