github开源项目
chsmy2018
学无止境,任何技能都是慢慢积累出来的。
展开
-
ButterKnife编译时注解探秘
安卓中很多有名的开源框架都运用了编译时注解,如ButterKnife,EventBus , Retrofit , GreenDao等。所以作为一个合格的安卓开发者,学会运用编译时注解是非常有必要的。下面就仿照ButterKnife的view的注入写一个例子来走一遍编译时注解的流程。第一步新建module1、创建一个module起名为annotation作为注解类的module 用来保原创 2017-09-21 15:13:20 · 395 阅读 · 0 评论 -
Glide使用(三)流程解析
本篇基于Glide4.6.1 上一篇Glide使用(二)流程解析分析了glide加载图片的with()方法和load()方法,我们知道with()和load()两个方法就是为了创建各种对象和赋值各种参数,into()方法开始真正的加载和解析图片,这篇分析into()方法。into() public ViewTarget<ImageView, TranscodeType> ...原创 2018-04-25 15:58:49 · 873 阅读 · 0 评论 -
Glide使用(二)流程解析
本篇基于Glide4.6.1 上一篇看到了Glide的基本用法 Glide使用(一)基本用法 , 使用Glide显示一张网络图片只需下面的一句话Glide.with(this).load(url).into(imageView);虽然用起来非常简单,不过里面可是进行了很多复杂的操作,下面就来看一下这句话的内部是个啥样子。 从上面的代码来看,使用Glide显示一张网络图片需要经过三步...原创 2018-04-25 15:58:01 · 383 阅读 · 0 评论 -
Glide使用(四)缓存机制
本篇基于Glide4.6.1 前面的两篇文章走了一遍glide的请求网络图片并加载的流程,分析一个图片加载框架,其缓存机制是必须要知道的,一个完善的图片加载框架一般都包含内存缓存和硬盘缓存两种缓存策略。他们的作用各不相同,内存缓存主要是防止应用重复的把数据读到内存中,而硬盘缓存主要是防止应用重复的去网络上下载图片。这样才能让框架加载图片的速度更快,也能更省流量。下面就来看一下glide的缓存机...原创 2018-05-03 09:05:39 · 2929 阅读 · 1 评论 -
Glide使用(一)基本用法
Glide是Andorid开发中使用的很广泛的一个图片加载库了。今天来看看Glide的用法。本文章基于最新版本4.6.1 首先gradle中导入依赖,下面是github上的写法 compile 'com.github.bumptech.glide:glide:4.6.1' annotationProcessor 'com.github.bumptech.glide:comp...原创 2018-04-03 14:53:31 · 9318 阅读 · 0 评论 -
Retrofi分析(三)
上一篇Retrofi分析(二) 分析了下Retrofit和Service的创建,经过一系列的封装,最终返回的是GitHubService接口的代理实现类。下面就是调用实现类中的方法开始请求网络了。 Call<List<Repo>> call = service.listRepos("octocat"); try { ...原创 2018-03-27 15:52:06 · 402 阅读 · 0 评论 -
Retrofi分析(二)
接着上一篇Retrofi分析(一)继续分析下面开始分析创建Retrofit对象和service 对象 这一部分是Retrofit框架的核心部分Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create())//设置数据解析器 ...原创 2018-03-27 10:51:38 · 2288 阅读 · 0 评论 -
okhttp流程分析(一)
okhttp在Android开发中已经很广泛了,所以理解其内部机制是很有必要的。首先看一下最基本的okhttp的请求流程GET请求:OkHttpClient client = new OkHttpClient();String run(String url) throws IOException { Request request = new Request.Builder...原创 2018-03-20 17:56:59 · 497 阅读 · 0 评论 -
Retrofi分析(一)
Retrofit是Square公司开源的一个高质量高效率的HTTP库,目前github上面star数量最多的Android网络库就是这个了。底层封装了okhttp,JakeWharton大神的经典作品之一。代码写的非常优雅,用了很多经典的设计模式。非常有必要了解一下它的源码。首先看一下官网给出的它的基本用法gradle中引入库implementation 'com.squareup...原创 2018-03-23 17:50:46 · 662 阅读 · 0 评论 -
okhttp流程分析(二)
上一篇文章分析了okhttp的同步和异步的运行流程。可以看到一个重要的方法 execute() 无论是同步还是异步,最终都会执行到这个方法。 @Override public Response execute() throws IOException { synchronized (this) { if (executed) throw new IllegalStat...原创 2018-03-22 14:57:28 · 244 阅读 · 0 评论 -
RxJava2.0使用(一)
RxJava刚出来的时候练习过一些,只是没有用到项目中,如今RxJava 2.x都已经出来很久了,这么好的一个框架不能了解它实在是不能安抚我这颗躁动的心。 Ok 下面先看一下基本用法: //创建被观察者 Observable<String> observable = Observable.create(new ObservableOnS原创 2017-07-11 16:57:36 · 428 阅读 · 0 评论 -
RxJava2.0使用(二)
RxJava中默认就是在哪个线程中发生事件就在哪个线程中消费事件,但是很多时候我们都有这样的需求比如联网请求数据,我们需要在子线程中去联网获取数据,获取到数据之后在主线程中更新UI。这时候就需要切换线程,切换线程使用RxJava 中的Scheduler 翻译过来就是调度器。 RxJava 已经内置了几个 Scheduler Schedulers.newThread() 代表一个常规的新线程原创 2017-07-12 18:31:38 · 1105 阅读 · 0 评论 -
RxJava2.0使用(三)
背压是RxJava中的重要的一个特性 : 什么是背压呢?先看一下第一篇的时候的那个图 假如甲往传送带上放东西放的速度太快,后面的乙处理传送带上传过来的东西处理的太慢,乙处理不过来这时候就会出问题了会报错抛出MissingBackpressureException。背压就是解决这种问题的其中一种很好的方法。 先感受一下背压: 首先我们先写一个小例子Observable.create原创 2017-07-24 17:11:23 · 615 阅读 · 0 评论 -
EventBus使用和解析
EventBus是Android上的订阅事件总线,它简化了各组件间组件和后台之间的通信,使用订阅者和发布者模式进行解耦,使用方便。使用EventBus的好处:1)简化了组件之间的通信2)将事件发送者和接收者分离3)在UI之间(Activity,Fragment),后台线程中表现良好4)避免复杂并且容易出错的依赖关系和生命周期问题。5)很快,专门针对高性能进行了优化6)很小jar包&l...原创 2019-01-11 15:32:36 · 259 阅读 · 0 评论