首页 > 编程知识 正文

app逻辑框架,app框架层分析

时间:2023-05-06 19:53:19 阅读:233464 作者:3211

题记

毕业3年了!犹豫!彷徨!最近处于一个瓶颈期,公司的代码已经得心应手,但是由于业务原因,网络加载和最新的开源库用的较少,感觉少点什么,就想沉下心来整理一个通用的网络加载框架,流行的技术重新刷一遍,本文就记录下关键节点。

1 准备工作

初步敲定MVP+retrofit+RxJava作为基础,言不多说,开始拼凑~
MVP的好处不用赘述了,什么业务逻辑与UI分离一类的等等,随便百度一片博客都讲得天花乱坠,如需细究—请点这里。我们这里要做一个通用的lib方便随时引用。接下来准备工作开始。

1.1 MVpHelper

推荐一下这个插件,直接在File->Setting->Plugs里面搜索就能直接下载。这个插件好处是能够快速生成model,view,presenter。

入上图所示,需要新建一个directory,新建一个XXContract,放在右边类名上 alt+insert-> MvpHelper,就会直接分包生成好XX的MVP模板类。

1.2 Butterknife

Butterknife作为View注入框架再好用不过了,能够省略很多代码,所以框架考入引用。
gradle引用:

//butterknife implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'

详细使用:官网

1.3 Preconditions

Google Guava中提供了一个Preconditions类,用于校验入参的正确性。主要使用在进行业务逻辑代码前进行前置判断(参数检验)。并且避免了冗长的if语句。guava将所有检验的API都放置于Preconditions类中。guava里面还有有很多有意思的东西,有空还是要捋一遍。

方法声明(不包括额外参数 )描述检查失败时抛出的异常checkNotNull(T)检查value是否为null,该方法直接返回value,因此可以内嵌使用checkNotNull。NullPointerExceptioncheckArgument(boolean)检查boolean是否为true,用来检查传递给方法的参数。IllegalArgumentException

Google Guava仓库

1.4 Retrofit+RxXX 1.4.1 Retrofit

Retrofit是square开源的网络Restful请求框架,底层是基于okhttp的,同时也是基于动态代理来实现的。开发者只需要定义接口就可以了,使用注解可以表示该接口请求的请求方式、参数、url等,同时也通俗易懂,减少代码量。
Retrofit

1.4.2 RxXX(reactivex)系列

为什么说reactivex系列呢,因为我们要引用的有RxJava,RxAndroid,RxLifecycle。

RxJava

implementation "io.reactivex.rxjava3:rxjava:3.x.y"

RxJava作为一个观察者模式的实现已经流行的好久,符合响应式编程的潮流,好处多多。

简化逻辑,解耦了各个模块操作(stream优雅的执行操作)操作符强大,可以实现各种功能(API完善,操作多样化)线程切换方便(发送和接收切换线程简单)报错稳固(固定的Error方法回调)

RxLifecycle

implementation ' com.trello.rxlifecycle3:rxlifecycle-android-lifecycle:3.0.0 '

如果引用了RxJava,在使用的时候,如果没有及时解除订阅,在退出View的时候,异步线程还在执行。这时对View还存在引用,相互引用导致死锁,此时就会产生内存泄漏。
RxLifecycle就是为了解决rxjava导致的内存泄漏而产生的!

2 代码上手

代码下载
emmmm…最近突然有点忙,先把搞好的工程代码上传,文字一点一点补吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。