24号程序猿


  • 首页

  • 分类

  • 归档

  • 标签

okhttp源码分析(一):interceptors

发表于 2020-02-22 | 分类于 Android |

本文是基于okhttp源码的整体分析和导读,通过本文你可以了解到okhttp的整体设计和部分细节原理。阅读本文前你不妨先记下这几个问题:

  • 一个请求是如何完成的?
  • 请求超时或者失败是否会重试?
阅读全文 »

第一个vlog——西藏

发表于 2020-02-22 | 分类于 摄影 |

不知不觉已经一个月没出门了,实在闷得慌,这样的日子至少还得再持续一阵。闷久了,就会萌发想出去旅行的念头。去年中秋一个人去了次西藏,也算是想了一年,终于如愿。独自一人旅行,很多时候会少了很多味道。网友戏称为孤独的最高境界。但是一路上我发现,很多人都是一个人去的西藏,驴友搭讪结伴很常见。也正因为对西藏的向往,我拍了第一个vlog。用的设备是手机相机,加上是第一次拍摄和剪辑(vue vlog把4K视频压缩太多了,完全糊了),所以显得非常不专业。但是再不好也好歹是第一次,值得纪念一下。

阅读全文 »

matrix源码分析(一):TraceCanary

发表于 2019-12-24 | 分类于 Android |

微信的APM Matrix开源有段时间了,我在看了源码后发现,其作为国民第一应用出品的APM,确实是精益求精,业内领先的。TraceCanary 是其中的一个工具,主要用来监控方法耗时,启动耗时, ANR、掉帧情况等。其分两部分,一部分是以插件的形式在编译期在每个方法执行前后插桩, 用于统计方法耗时;另一部分是运行时的sdk,真正的耗时、卡顿、ANR监控逻辑所在。

阅读全文 »

RxJava is no more essential

发表于 2019-12-16 | 分类于 Reactive Programming |

kotlin里的flow API,和RxJava神似,大体一样的操作符和线程(flow里是协程)调度,链式API , 都是cold stream, 等等,flow可以作为kotlin中RxJava的替代,而且可能做得更好。

阅读全文 »

利用ASM移除access方法

发表于 2019-12-08 | 分类于 Android |

repo: https://github.com/bboylin/Synth

简介

写Android的肯定注意到过:断点调试有时候stacktrace里会出现自己代码里没有出现的方法,而且命名是access$加上一串数字。其实,access方法是Java语法糖生成的synthetic方法,目的是为了实现内部类和外部类之间private member和private field的访问,更具体地举例说,之所以外部类能访问内部类的私有变量,是因为Java生成了个package访问级别的access方法,同时修改了指令,把所有对内部类私有变量的访问变成了对access方法的调用,读写都是如此。反之亦然,内部类访问外部类的私有成员变量/私有static变量/私有方法/私有static方法都是通过access方法实现的。

阅读全文 »

Android单测实践经验

发表于 2019-10-15 | 分类于 Android |

组里推行单测的一些经验和踩过的坑。

阅读全文 »

How Lambda Works

发表于 2019-08-19 | 分类于 Android |

前言

lambda表达式我们都用过,但是字节码层面Java是如何处理lambda这个语法糖的呢?Android上是否有对lambda做特殊处理?带着这俩问题,本文将以几段代码作为示例为你揭开lambda背后的黑科技。

阅读全文 »

leakcanary2源码分析

发表于 2019-07-14 | 分类于 Android |

leakcanary 2.0相比1.6来说多了些骚操作,比如install不需要手动调了。另外代码也切到kotlin了,同时可以监控support包下fragment的内存泄露了。

阅读全文 »

慎用继承

发表于 2019-06-25 | 分类于 Java |

之前看到Jake Wharton利用error prone搞了个java代码编译时检查工具,规则如下:除了使用final,abstract修饰的类外,所有类必须打上@Open注解。 言外之意不是专门被设计用来继承的类尽量用final修饰。无独有偶,kotlin中类默认是final的,想被继承需要手动加上open关键字。这都说明:这些大佬不希望类是默认可被继承的,也就是撸码过程中继承关系需要慎用。那么为什么呢?

阅读全文 »

RxJava2源码分析

发表于 2019-04-11 | 分类于 Reactive Programming |

本文将按照如下3个部分组织,分别是:

  • basics
  • operators
  • schedulers

本文不会很具体沿调用链每个API都一行一行分析,主要了解其原理和设计。

阅读全文 »
12
bboylin

bboylin

20 日志
10 分类
10 标签
GitHub email
Links
  • 玩Android
© 2020 bboylin
由 Hexo 强力驱动
主题 - NexT.Pisces