240 发简信
IP属地:广东
  • 大佬牛逼

    Android自定义View实践之ViewGroup

    Android 自定义ViewGroup实践—让某些子View优先显示完整(压缩其它View) 效果图 效果分析 子View横向排列 子View竖直居中 标记为显示完整的Vi...

  • 120
    java设计模式-备忘录模式(Memento)

    定义 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的...

  • 120
    Glide 源码分析解读-基于最新版Glide 4.9.0

    项目编译 项目基于最新版 Glide 4.9.0 源码分析,通过如下方式获取并编译代码: 代码量(使用 cloc 统计): 我在分析 Glide 源码前将 Glide 的项目...

  • @Iverson毅 你看 RxPermissions 源码里面有

    AOP学习总结-AspectJ编写权限判断框架

    当我们做权限判断和申请时,虽然有很多优秀的框架去帮我们完成,但是是否有想过这样的一个问题,以使用 RxPermissions 为例,每个权限判断的地方都要这样调用: 是不是觉...

  • 120
    高仿微信表情控件 -- LQREmojiLibrary

    LQREmojiLibrary 一个超级牛逼的表情库,可使用表情及贴图功能,方便好用,抽离图片加载接口,让开发者自己选择图片加载工具。 码云: https://git.osc...

  • 文章里面就是全部代码

    AOP学习总结-AspectJ编写权限判断框架

    当我们做权限判断和申请时,虽然有很多优秀的框架去帮我们完成,但是是否有想过这样的一个问题,以使用 RxPermissions 为例,每个权限判断的地方都要这样调用: 是不是觉...

  • 120
    一文解决Android View滑动冲突

    上一篇文章我们讲述了Android View事件分发机制。如果你对View的事件分发还不熟悉,建议先去看一下 一文读懂Android View事件分发机制 它是我们今天滑动冲...

  • 120
    调试Annotation Processor编译时注解器

    调试Annotation Processor编译时注解器 这篇文章的目的是解释如何在Android Studio(或IntelliJ)下调试注解处理器Module。来了解你的...

  • [备忘]注解相关参数说明

    Element的子类介绍 ExecutableElement表示某个类或接口的方法、构造方法或初始化程序(静态或实例),包括注释类型元素。PackageElement表示一个...

  • 120
    AOP学习总结-Javassist捕获异常之创建gradle插件步骤

    如何利用 Javassist 去优雅的实现一个异常捕获功能,可以参考文章一文应用 AOP | 最全选型考量 + 边剖析经典开源库边实践,美滋滋 这里主要说一下文章里面没讲到的...

  • AOP学习总结-AspectJ编写权限判断框架

    当我们做权限判断和申请时,虽然有很多优秀的框架去帮我们完成,但是是否有想过这样的一个问题,以使用 RxPermissions 为例,每个权限判断的地方都要这样调用: 是不是觉...

  • 120
    AOP学习总结-利用APT仿写ButterKnife

    在应用 AOP 之前,应该思考几个问题: 明确你应用 AOP 在什么项目 小范围试用,选择一个侵入性小的 AOP 方法 明确切入点的相似性 考虑切入点的数量和相似性,确定你是...

  • 120
    AOP学习总结-简介

    AOP 全名 Aspect Oriented Programming,意思是面向切面编程。AOP 跟 OOP 一样,是一种编程思想。如果 OOP 是纵向思想的话,那么 AOP...

  • Glide 源码解析 ----- android source code for Glide 4.x

    作为google主推的一款图片加载框架,从glide3.x 到glide4.x加入apt的注解编译;详细的使用可以详见官方文档[Glide v4] https://muyan...

  • 120
    使用annotationProcessor打造编译时的注解(一)

    写在前面 目前越来越多的框架使用编译时的注解,比如butterknife,Dagger2,EventBus等,下面以Butterknife为例一步一步的实现编译时的注解,算是...

  • 试试这样 :smiley:
    ```
    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...

个人介绍
Github:https://github.com/lizixian18
个人小站:http://lizixian18.github.io/

非静态的内部类容易引起内存泄漏