Android native 崩溃信息捕获实践

本篇是 bugly 一篇关于 native crash 捕获的文章的练习。由于他文章中已经给出了相关的大部分知识点,这里我就仅仅补充一些细节,并给出一个完整的 demo。

阅读全文

Android P 源码分析 5 - Low memory killer 之 lmkd 守护进程

lmkd 是在应用层实现的取代原有 lowmemorykiller 驱动的守护进程。通过监听 memory pressure 事件,lmkd 可以在内存 low、medium 和 critical 的时候得到通知,进而回收优先级比较低的进程

阅读全文

Android P 源码分析 4 - logd 的初始化

为了跟老罗的书保持一个比较一致的步伐,这一篇开始我们来看 logd 的实现。当然,这个 logd 不是老罗书里讲的 log 驱动,而是在应用层实现的一个守护进程。

阅读全文

Android P 源码分析 3 - SharedPreferences 源码分析

本来按顺序这一篇应该是 logd,但突然有点好奇 SP 在保存数据的时候是怎么同步的,就还是先看 SP 吧,当做在开始啃 logd 这个硬骨头前轻松一下(虽然这么说,SP 还是有很多值得我们学习的地方的)。

阅读全文

Android P 源码分析 2 - 强弱指针的实现

继上篇我们学习了 Android 轻量级指针的实现,是时候来看“重量级”指针的实现了。在 Android 里,“重量级”指针指的是 RefBasesp/wp 配合使用的情况,它提供了完整的强、弱指针的支持。

阅读全文

Android P 源码分析 1 - 轻量级智能指针的实现

作为 Android 源码分析系列文章的第一篇,我们先看 LightRefBase 的源码,热热身。

阅读全文

Java 程序员眼里的 Linux 内核 —— wait_event 源码分析

看 Linux 的 wait_event 源码时,联想到我们平时经常用得比较多的 wait/notify、double-check 和 volatile,突然意识 wait_event 简简单单几行代码的背后,涉及的知识非常丰富。本篇文章我们就一起了来探索它背后的知识,然后尝试着和我们的日常开发关联起来。

阅读全文

Linux 内核页表的创建

内核跟普通的应用一样,为了使用虚拟内存,也需要一个给 CPU 设置一个页表。在这篇文章中,我们就一起来了解 Linux 是如何为内核创建页表的。

阅读全文

《深入理解 LINUX 内核》读书笔记 - 临时内核页表

x86 在启动的时候,CPU 处于实模式;而在保护模式下,为了将线性(内存)地址转换为物理内存地址,我们需要给 CPU 设置页表。本篇文件主要给《深入理解 LINUX 内核》临时内核页表一节(P74)中作者描述不太详细的部分添加更多的解释,并不打算把书中相关的知识点都搬上来,相关知识读者可以参考书中的描述。

阅读全文

Flutter 开发(5)- 插件的使用、开发和发布

本篇文章我们先一起学习 Flutter 插件的使用,然后通过开发一个 toast 插件来学习它的开发,最后发布到 Pub 上。

阅读全文