大佬牛逼
Android自定义View实践之ViewGroupAndroid 自定义ViewGroup实践—让某些子View优先显示完整(压缩其它View) 效果图 效果分析 子View横向排列 子View竖直居中 标记为显示完整的Vi...
大佬牛逼
Android自定义View实践之ViewGroupAndroid 自定义ViewGroup实践—让某些子View优先显示完整(压缩其它View) 效果图 效果分析 子View横向排列 子View竖直居中 标记为显示完整的Vi...
定义 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的...
项目编译 项目基于最新版 Glide 4.9.0 源码分析,通过如下方式获取并编译代码: 代码量(使用 cloc 统计): 我在分析 Glide 源码前将 Glide 的项目...
@Iverson毅 你看 RxPermissions 源码里面有
AOP学习总结-AspectJ编写权限判断框架当我们做权限判断和申请时,虽然有很多优秀的框架去帮我们完成,但是是否有想过这样的一个问题,以使用 RxPermissions 为例,每个权限判断的地方都要这样调用: 是不是觉...
LQREmojiLibrary 一个超级牛逼的表情库,可使用表情及贴图功能,方便好用,抽离图片加载接口,让开发者自己选择图片加载工具。 码云: https://git.osc...
文章里面就是全部代码
AOP学习总结-AspectJ编写权限判断框架当我们做权限判断和申请时,虽然有很多优秀的框架去帮我们完成,但是是否有想过这样的一个问题,以使用 RxPermissions 为例,每个权限判断的地方都要这样调用: 是不是觉...
上一篇文章我们讲述了Android View事件分发机制。如果你对View的事件分发还不熟悉,建议先去看一下 一文读懂Android View事件分发机制 它是我们今天滑动冲...
调试Annotation Processor编译时注解器 这篇文章的目的是解释如何在Android Studio(或IntelliJ)下调试注解处理器Module。来了解你的...
Element的子类介绍 ExecutableElement表示某个类或接口的方法、构造方法或初始化程序(静态或实例),包括注释类型元素。PackageElement表示一个...
如何利用 Javassist 去优雅的实现一个异常捕获功能,可以参考文章一文应用 AOP | 最全选型考量 + 边剖析经典开源库边实践,美滋滋 这里主要说一下文章里面没讲到的...
当我们做权限判断和申请时,虽然有很多优秀的框架去帮我们完成,但是是否有想过这样的一个问题,以使用 RxPermissions 为例,每个权限判断的地方都要这样调用: 是不是觉...
在应用 AOP 之前,应该思考几个问题: 明确你应用 AOP 在什么项目 小范围试用,选择一个侵入性小的 AOP 方法 明确切入点的相似性 考虑切入点的数量和相似性,确定你是...
AOP 全名 Aspect Oriented Programming,意思是面向切面编程。AOP 跟 OOP 一样,是一种编程思想。如果 OOP 是纵向思想的话,那么 AOP...
作为google主推的一款图片加载框架,从glide3.x 到glide4.x加入apt的注解编译;详细的使用可以详见官方文档[Glide v4] https://muyan...
写在前面 目前越来越多的框架使用编译时的注解,比如butterknife,Dagger2,EventBus等,下面以Butterknife为例一步一步的实现编译时的注解,算是...
试试这样
```
CompositeDisposable mDisposable = new CompositeDisposable();
Observable.create((ObservableOnSubscribe<Integer>) emitter -> {
//2
Log.e(TAG, "subscribe");
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();
}).subscribe(new Observer<Integer>() {
@Override
public void onSubscribe( Disposable d) {
Log.e(TAG, "onSubscribe");
mDisposable.add(d);
}
@Override
public void onNext( Integer integer) {
Log.e(TAG, "onNext收到:" + integer);
if (integer == 2) {
mDisposable.clear();//切断被观察者与观察者之间连接
Log.e(TAG, "切断了连接");
}
}
@Override
public void onError( Throwable e) {
Log.e(TAG, "onError");
}
@Override
public void onComplete() {
Log.e(TAG, "onComplete");
}
});
```
记:RxJava小词典一.使用Disposable切断被观察与观察者之间连接 语法:disposable.dispose(); 打印为:E/SimpleActivity: onSubscribeE...