理解 WorkManager 的实现

最近使用 Android Jetpack 中 WorkManager 组件做了一个上报一些做分析用途数据的需求, 用着感觉挺香的. 于是想看下其内部的实现原理.

岛屿数量

给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围

关于 std::move

最近在看一些框架的 c++ 源码中, 发现它们在许多函数传参时会使用 `std::move` 调用, 于是想弄清这个目的是什么.

Android 中 MessageQueue 的 nativePollOnce

Android SDK 中的事件循环已经是一个老生常谈的问题了, 像 Handler Looper MessageQueue 这几个类也是被大家研究透彻了. 但是再回头看以前自己的分析, 总感觉差点什么, 不够透彻. 心里隐隐感觉自己没有把事情完全吃透, 于是今日又回顾 Android 中的事件循环机制, 注意到 MessageQueue 中获取下一条消息时会执行一个 native 调用 nativePollOnce, 翻看 Android 系统源码发现有内容.

优化 ObjectOutputStream 的使用

最近阅读《Android移动性能实战》看到手机QQ测试团队给出的一个案列 「Object Ouput Stream 4000 多次的写操作」, 其原因就是直接使用了 ObjectOutputStream + FileOutputStream 做对象的序列化到磁盘。印象中我们的项目中也有这样的代码 SerializeUtil#serializeObject:

Android init 进程的启动过程

init 进程是 Android 系统中用户空间的第一个进程,进程号为 1。作为第一个进程,它被赋予了很多重要的职责,比如创建 Zygote 进程和属性服务等。

init 进程由多个源文件共同组成,这些文件位于源码目录 system/core/init 中。

使用Android Studio Code 模板提高编码效率

在工作中最近的一个业务上,每次新加一个同一类的功能时,发现会创建许多类似的类,写类似的代码。就思考能否通过模板的方式提高新建同类功能的效率,于是通过搜索发现 IDE 支持的 FreeMaker.