稀有猿诉

十年磨一剑,历炼出锋芒,说话千百句,不如码二行。

一文带你理解OkHttp中的Gzip压缩

本文译自OkHttp’s Gzip Compression,原文发布于2020年5月1日。本文假定读者对HTTP有基本的了解,以及使用过OkHttp,否则理解起来可能会一点困难。

译注: OkHttp确实会自动添加gzip并处理响应。但如果显示的给请求添加除了gzip之外的字段,如”Accept-Encoding: gzip, deflate, br”,那么就需要手动处理响应。其实一般时候我们并不需要手动设置,除非是模拟浏览器时(比如用了浏览器的UA),或者某些服务器强制deflate字段。更多的信息可以看这里。

详解DiffUtils、Myers算法和 Jetpack Compose

本文译自《DiffUtils, Myers’ Algorithm and Jetpack Compose》,原文发布于2024年12月27日。

在 Android UI 开发领域,DiffUtils 是优化 RecyclerView 中列表更新的必备工具。DiffUtils 是一个实用程序类,它计算将一个列表转换为另一个列表所需的最小更改,并仅更新 UI 中已更改的部分,从而节省性能并减少不必要的重绘。这个强大的工具依赖于Myers算法,这是一种在两个序列之间找到最短编辑脚本(Shortest edit script)的有效方法。

关于Android 16你想知道的都在这里

2025年的Android新版本来的比2024年稍早了一些。今年Google非常反常地提前就发布了Android的新版本Android 16 Baklava,整体的计划比往年提前了2~3个月。另外,谷歌把Android 16的代码命名为「Baklava」,这与先前的字母表顺序的点心食物命名方式截然不同,不过「Baklava」巴克拉瓦,又称果仁蜜饼,是一种口味浓郁、甜蜜的土耳其酥皮点心。

群星闪耀的大前端开发

乔帮主发布iPhone以降,把世界推向了智能手机时代,随之而来的是移动互联网大潮,一时间移动应用开发变得炙手可热起来,渐渐的超越了传统桌面端和传统前端,成为了主流。随之而来的就是重复开发的问题,同样的业务需要在Android上面实现一次,在iOS上面实现一次,通常也需要在Mobile Web(移动端H5)实现一次,自此跨端开发成了移动互联时代一个必须要攻克的难题。

赶紧上车开启Compose大前端之路

在前面的文章中,我们一再强调Jetpack Compose是一个声明式的UI框架,尽管我们都是基于Android开发来实战的,但Compose并不局限于Android开发,它其实与特定的开发平台没有关系,是可以做到跨平台开发的。事实上JetBrains早就已经准备好了一套工具,以让Compose跨平台,开发多端应用,跻身于大前端的一员。今天就来学习一下如何使用Compose进行大前端开发。

用Compose中的CompositionLocal来暗渡陈仓

通过前面的学习我们知道Jetpack Compose是一个声明式的UI框架,采用的是函数式编程思想,直观上来看就是一坨函数从上调到下。当函数需要数据时,会通过函数调用的参数来传递,一般来说这也没有什么问题。但当需要的数据特别多时,特别是对于一些非业务逻辑本身的数据(输入与输出),如上下文环境变量(Context,或者主题之类),都通过函数调用的参数传递就难免会让代码变得非常的庞杂和臃肿。这时候就可以使用CompositionLocal,一种在组合树中隐式的从上到下传递数据的方法,我们来具体地看一下。