在拆轮子系列:拆 Okio{:target="_blank"} 最后我曾说过会对 Retrofit、OkHttp、Okio 三者进行一个小结,并且整理一套网络层的“微架构”,今天终于得以完成,在这里一起奉送给大家 :)
继续阅读 »
用 RxJava 处理网络数据和本地缓存这个话题大家肯定听过好多遍了,但今天这里还有点新花样:高级缓存。什么叫高级缓存?我得向大家坦白,题目中的“高级”其实只是为了吸引大家点进来,内容有一定综合性,希望大家喜欢。
1,先理解问题
继续阅读 »
Retrofit{:target="_blank"},OkHttp{:target="_blank"},Okio{:target="_blank"} 是 Square 团队开源的安卓平台网络层三板斧,它们逐层分工,非常优雅地解决我们对网络请求甚至更广泛的 I/O 操作的需求。其中最底层的 Okio 堪称小而美,功能也更基础,应用更广泛。这次我们就对它进行一个详细的分析。本文的分析基于 Okio 截至 2016.8.4 的最新源码{:target="_blank"},非常建议大家下载 Okio 源码之后,跟着本文,过一遍源码。
继续阅读 »
安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选。“我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!{:target="_blank"}”,在用了这些好轮子将近两年之后,现在是时候拆开轮子一探究竟了。本文基于 OkHttp 截至 2016.7.11 的最新源码{:target="_blank"}对其进行了详细分析。
继续阅读 »
很早之前就在博客统计中发现了来自各色奇怪网站的流量,而且之前也遇见过搜索引擎搜自己的博客,结果是各种奇怪的网站排在前面。之前也没在意,反正分了我的流量,我也没啥损失,加了原文链接的还能导点流量过来。今天再次想到了其中之一的“推酷网”,便尝试再搜了一下,看看到底有多少这样的无良网站恶意侵权,不试不知道,一试吓一跳。
继续阅读 »
安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选。“我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!{:target="_blank"}”,在用了这些好轮子将近两年之后,现在是时候拆开轮子一探究竟了。本文基于 Retrofit 截至 2016.6.23 的最新源码{:target="_blank"}对其进行了详细分析。
继续阅读 »
在安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world{:target="_blank"} 中,我主要分析了坐标系、基本绘制流程、绘制三角形、投影变换参数意义,在本篇中,我将分析绘制矩形、绘制图片纹理、读取显存的内容,以及一些注意事项,完整代码可以在 GitHub 获取{:target="_blank"}。
继续阅读 »
做安卓开发满打满算也有 3 年了,OpenGL 这块之前完全没有涉及过,这两周一直在整理安卓相机预览、用 GPUImage 进行美颜处理以及美颜后的数据传输这块内容,结果 GPUImage 的美颜原理基本一窍不通,因此就把 OpenGL ES 好好入了个门,并且整理为 安卓 OpenGL ES 2.0 完全入门 系列。本文是系列第一篇,主要是介绍了 OpenGL 的一些基本概念,并且包含了对一个 hello world 程序的完全解析,注意,并不是有一个 hello world,而是对其进行了完全解析!
继续阅读 »
在完美的安卓 model 层架构(上){:target="_blank"}中,我主要介绍了网络请求、数据库持久化、Immutable/Value types、Json 序列化与反序列化这四部分内容,而剩下的关于 Parcelable,ZonedDateTime,null safety,rx error handling,config injection以及测试相关的内容,将在本篇中进行介绍。
继续阅读 »
前些日子在 Android Weekly{:target="blank"} 上看到了一篇介绍 SqlDelight 使用{:target="_blank"}的文章,虽然之前了解过 SqlDelight{:target="_blank"} 和 SqlBrite{:target="_blank"},但却一直没有尝试过。但这次我被文章中的例子惊艳到了,而且 SqlDelight 还能和 AutoValue{:target="_blank"} 兼容使用,进一步打消了我的顾虑,我就赶紧在 AndroidTDDBootStrap{:target="_blank"} 项目进行了尝试,并且甩掉了之前使用的 StorIO{:target="_blan
继续阅读 »