扫盲系列 - RxJava 2.0 -- 常用操作符

下面是根据 RxJava 2.x 使用详解系列 的 blog ,挑拣我认为会用到的操作符,进行的记录,当做一个速查手册来使用。 创建操作符 creat() 上面已经有例子了,就不多举例子了 just() 最多能接受 10 个参数,也就是最多能发送 10 条数据 Flowable.just("test1", "test2").subscribe(s -> Log.d("hoyouly", "just onNext() " + s)); //结...

阅读更多

扫盲系列 - Java 引用类型

在JDK1.2 之前, java 中引用的定义:如果引用类型的数据类型中存储的数值代表的是一块内存的起始地址,就称这块内存代表一个引用,在JDK1.2 之后, java 把引用类型分为四种级别,这四种级别由高到低分别是:强引用,软引用,弱引用和虚引用 强引用(StrongReference) 当内存空间不足, Java 虚拟机宁愿抛出 OutOfMemoryError 错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 因此强引用是造...

阅读更多

扫盲系列 - RxJava 2.0 -- subscribeOn 和 observeOn

我们都知道 subscribeOn() 是指定上游发送事件的线程 observeOn() 指定下游接收事件的线程 他们之间可以多种组合,可是会有啥效果呢,实践出真知。那就来做几个试验吧。 试验一 正常的情况,一个 subscribeOn 和 一个 observeOn ,并且 subscribeOn 上 observeOn 下 Observable .create((ObservableOnSubscribe<Integer...

阅读更多

扫盲系列 - Java 单例模式

恶汉式 public class Singleton { private static Singleton singleton=new Singleton(); private Singleton(){} public static Singleton newInstance(){ return singleton; } } 双重校验锁 DCL public class Singleton { private static vol...

阅读更多

扫盲系列 - RxJava 2.0 -- 观察者模式

RxJava 其中 Rx 是 ReactiveX 的缩写, ReactiveX 又是 Reactive Extensions 的缩写 所以 RxJava 就是 java 上异步和基于事件响应式编程 RxJava 基于观察者模式,主要包括 观察者,被观察者,订阅,事件。 观察者模式主要分以下几种 Observable 和 Observer Flowable 和 Subscriber Single 和 SingleObserver Comple...

阅读更多

源码分析 - RxJava 2.0 -- 线程切换

在使用 RxJava 的过程中,我们经常会使用到其线程切换的功能,而线程切换的功能主要通过 subscribeOn() 和 observeOn() 两个方法实现。为啥一行代码就能切换线程呢?这中间到底做了啥呢?带着这个疑问,我们具体看看里面实现逻辑。 下面是一段使用 RxJava 进行线程切换的样例代码: 主线程 样例 Observable.just("Hello, world !") .subscribeOn(Schedulers.io...

阅读更多

Android 性能优化 -- 绘制优化

绘制优化,主要从两个方面进行优化 降低View.onDraw()的复杂度 避免过度绘制(OverDraw) 降低View.onDraw()的复杂度 从两个方面优化降低复杂度。 onDraw() 中不要创建新的局部对象 因为 onDraw 可能会被频繁调用,这样就会一瞬间产生大量临时对象,这样不仅占用过多的内存而且还导致系统频繁 GC ,降低程序的执行效率 避免 onDraw() 执行大量耗时的工作 因为这样会抢占 CPU 时间片,从...

阅读更多

Android 性能优化 -- Bitmap 优化

基础知识 资源目录分辨率对照表 密度类型 代表的分辨率(px) 屏幕密度(dpi) dpi范围 换算(dp/px) 比例 低密度(ldpi) 240x320 120 0dpi ~ 120dpi 1dp=0.75px 3 中密度(mdpi)...

阅读更多