Piasy

NEVER STOP

拆轮子系列:拆 OkHttp

安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选。“我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!”,在用了这些好轮子将近两年之后,现在是时候拆开轮子一探究竟了。本文基于 OkHttp 截至 2016.7.11 的最新源码对其进行了详细分析。 1,整体思路 从使用方法出发,首先是怎么使用,其次是我们...

那些年,我们被人窃取过的博客

很早之前就在博客统计中发现了来自各色奇怪网站的流量,而且之前也遇见过搜索引擎搜自己的博客,结果是各种奇怪的网站排在前面。之前也没在意,反正分了我的流量,我也没啥损失,加了原文链接的还能导点流量过来。今天再次想到了其中之一的“推酷网”,便尝试再搜了一下,看看到底有多少这样的无良网站恶意侵权,不试不知道,一试吓一跳。 搜索引擎 我以一篇博客的标题“深入理解 RecyclerView 系列之一...

拆轮子系列:拆 Retrofit

安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选。“我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!”,在用了这些好轮子将近两年之后,现在是时候拆开轮子一探究竟了。本文基于 Retrofit 截至 2016.6.23 的最新源码对其进行了详细分析。 1,整体思路 从使用方法出发,首先是怎么使用,其次是...

安卓 OpenGL ES 2.0 完全入门(二):矩形、图片、读取显存等

在安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world 中,我主要分析了坐标系、基本绘制流程、绘制三角形、投影变换参数意义,在本篇中,我将分析绘制矩形、绘制图片纹理、读取显存的内容,以及一些注意事项,完整代码可以在 GitHub 获取。 1. 绘制矩形 上篇中有提到,三角形是基本形状,利用三角形我们可以“拼出”其他的任何形状,例如矩形。 绘制两个三角形时...

安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world

做安卓开发满打满算也有 3 年了,OpenGL 这块之前完全没有涉及过,这两周一直在整理安卓相机预览、用 GPUImage 进行美颜处理以及美颜后的数据传输这块内容,结果 GPUImage 的美颜原理基本一窍不通,因此就把 OpenGL ES 好好入了个门,并且整理为 安卓 OpenGL ES 2.0 完全入门 系列。本文是系列第一篇,主要是介绍了 OpenGL 的一些基本概念,并且包含了对...

完美的安卓 model 层架构(下)

在完美的安卓 model 层架构(上)中,我主要介绍了网络请求、数据库持久化、Immutable/Value types、Json 序列化与反序列化这四部分内容,而剩下的关于 Parcelable,ZonedDateTime,null safety,rx error handling,config injection以及测试相关的内容,将在本篇中进行介绍。 声明:本文已独家授权微信公众号A...

完美的安卓 model 层架构(上)

前些日子在 Android Weekly 上看到了一篇介绍 SqlDelight 使用的文章,虽然之前了解过 SqlDelight 和 SqlBrite,但却一直没有尝试过。但这次我被文章中的例子惊艳到了,而且 SqlDelight 还能和 AutoValue 兼容使用,进一步打消了我的顾虑,我就赶紧在 AndroidTDDBootStrap 项目进行了尝试,并且甩掉了之前使用的 StorI...

BUCK 与 RetroLambda 兼容性解决方案

从最初 OkBuck 发布时宣称 BUCK 与 RetroLambda 不兼容只能忍痛割爱(lambda),到 BUCK 维护者之一联系我声称 BUCK 可以编译 Java 8 结果遇到编译错误未解,到昨晚终于成功让 BUCK 与 RetroLambda 出双入对,时隔大半年终于臻至完美,怎一个爽字了得!如果你还不了解什么是 BUCK,可以参考我的两篇文章 OkBuck, underneat...

Dagger2 Scope 注解能保证依赖在 component 生命周期内的单例性吗?

Dagger2 已经在项目中用了一年多了,之前曾看到过一篇文章,里面说 Scope 注解可以保证依赖在每个 component 生命周期内的单例性,即局部单例。但上周一天和同事一起看生成的 injector 代码,却并未发现这一点是怎么做到的,于是得出“单例性需要 module 的 provide 方法实现来保证”的结论。但我依然对此不甚放心,决定仔细实验一番。测试代码可以在 Github ...

RelativeLayout, FlexLayout 及其他 layout 性能对比

一直以来,我们都在各种场合、各种文章中看到避免使用 RelativeLayout、避免使用过多的 layout 嵌套,因为它们存在很大的性能开销。开发的过程中也确实在留意这一点,然而每每编写 layout 文件时,都会怀疑,这样或者那样,到底会变快,还是变慢?本文就针对简单的 layout 和复杂的 layout,是否使用 RelativeLayout 的性能进行了测试,此外,还对最近很火的...