ZYT Blog

Thinking will not overcome fear but action will.

开源框架剖析-异步rxjava

开源框架剖析-异步rxjava rxjava核心思想是观察者模式 RxJava提供了丰富的操作符链式编程,使代码简洁,易于维护,线程切换功能极其强大,可任意指定观察者发生的线程以及被观察者的线程 观察者模式使用场景 1,一个方面的操作依赖于另一个方面状态变化 2,如果在更改一个对象的时候,需要同时连带更改其他对象 3,当一个对象需要通知其他对象,但又希望其他被通知对象是松散耦合的 ...

开源框架剖析-事件传递EventBus

Android事件发布、订阅框架

通过EventBus可以简化事件传递,它的优点是代码简洁,使用简单,解耦事件的发布和订阅。 EventBus事件流程 EventBus三要素: 1,Event:事件 2,Subscriber:事件的订阅者 在EventBus3.0之后,事件处理的方法可以随意取名,但是需要添加一个注解@Subscribe,并指定线程模型(默认为POSTING)。 3,Publisher:事件...

开源框架剖析-依赖注入dagger2

开源框架剖析-依赖注入dagger2 通过java注解完成依赖注入,实现将其他类的实例自动注入到使用类中,而不是通过手动创建 手动注入的方式有: 通过接口注入;通过set方法注入;通过构造方法注入 用法 1,引入依赖 implementation 'com.google.dagger:dagger-compiler:2.4' annotationProcessor 'com.googl...

开源框架剖析-依赖注入ButterKnife

开源框架剖析-依赖注入ButterKnife 为了解决findViewByid、setOnclickListener这些手写代码 旧版本用到了反射,新版本用的是编译时注解处理技术APT 主要用到的技术有自定义注解、注解处理器APT(Annotation Processing Tool)、 APT annotationProcessor 1,生命注解的生命周期为CLASS 2,继成A...

开源框架剖析-UI卡顿优化blockcanary

巧用handler.dispatchMessage实现

UI卡顿优化blockcanary 项目越来越复杂,代码复杂度也越来越深。如果出现了UI卡顿,很难定位到是哪里的问题。 一个Activity可能包括了很多页面很多回调,怎么找到这些卡顿的元凶呢? BlockCanary是一个非侵入的性能监控组件,解决UI卡顿 UI卡顿原理 1,60fps / 16ms/帧 2,尽量在16ms内处理完所有的CPU也Gpu计算、绘制、渲染等操作。否则会U...

开源框架剖析-内存leakcanary

实时监测内存泄露

开源框架剖析-内存leakcanary 内存泄露对外不可见 leakcanary是Square开源的一款轻量第三方内存泄露检测工具,原理是监控一个即将要销毁的对象 内存泄露主要发生的部位有 1,栈stack 基本类型,对象引用 2,堆heap 3,方法区method 为什么会有内存泄露 1,当一个对象已经不需要再使用了 2,有些对象只有有限的生命周期 内存泄露会导致什么问题...

开源框架剖析-图片加载Picasso

开源框架剖析-图片加载Picasso Picasso是一个强大的图片加载缓存框架 使用流程 Picasso.get() .load(path) .placeholder(R.drawable.block_canary_icon) .error(R.drawable.block_canary_icon) ...

开源框架剖析-图片加载Glide

Glide,google官方推荐框架

开源框架剖析-图片加载Glide Glide的几个基本概念 1,Model 模型概念,表示数据来源 可以是:图片url、资源ID、文件类型 2,Data 原始数据 3,Resourse 解码之后的资源 4,TransformedResource 裁剪等转换后的资源 5,TranscededResource 转码完成后的资源 6,Target 需要显示的图片封装为Target ...

开源框架剖析-网络请求Retrofit

它以精妙的设计让我们能以轻松简洁的方式进行网络数据的请求

开源框架剖析-网络请求Retrofit 简单介绍下使用原理 首先,通过Builder创建Retrofit对象,在create方法中,通过JDK动态代理的方式,生成实现类,在调用接口方法时,会触发InvocationHandler的invoke方法,将接口的空方法转换成ServiceMethid, 然后生成okhttp请求,通过callAdapterFactory找到对应的执行器,比如RxJ...

开源框架剖析-网络请求OkHttp

okhttp

开源框架剖析-网络请求OkHttp 使用流程 OkHttpClient client = new OkHttpClient.Builder().build(); Request request = new Request.Builder().build(); Call call = client.newCall(request); call.execute(...