Zero 发布的文章

Binder 原理浅析 # 数据传输的集装箱 Parcel

Binder 是 Android IPC 的重要角色,在平时一般的工程中,知道 AIDL 的用法大抵都够用了,但如果要谈 Binder 的内部原理如调用效率、数据传输限制,或者 Binder 的其他用法如 pingBinder,再或者写一个自己的 ServiceManager,Binder 的深度原理就值得探究了,本系列从数据传输出发,逐步解开 Binder 的原理。

Parcel 在 Android 中扮演着跨进程传输的集装箱的角色,是数据序列化的一种手段,平时工程中获取的 Binder 对象接口就是靠它来跨进程传输的,本文来看 Parcel 对象的数据传输原理。

- 更多 -

Android 中的自启行为浅析 # Broadcast(一)

在 Android 越来越普及的当下,Android 手机在用户心里最尖锐的问题总结起来就是两个关键词:卡慢、费电,恰好本文系列讲述跟这两项都有关系,Android 的普通应用程序的自启动行为直接导致了内存紧张、CPU占用以至于手机 UI 卡慢、耗电快。这里我们说的 “自启动” 这个字眼实际上指的是:用户未有主动启动目标应用程序,目标应用程序进程却被启动的行为,说是自启动,其实是有其他进程把应用程序给带起来了。

本文将从 Broadcast 的角度来分析第三方应用是如何通过广播来自启的。

- 更多 -

Dalvik虚拟机 - 类的加载

Dalvik虚拟机系列的文章力求将从虚拟机开始运行、类的加载/初始化、字节码的解释执行都覆盖到。加载类是我们最常接触但又不经常直接去显示加载的一个行为,本文从 ClassLoader.loadClass 说起来说明类加载的具体过程,这也将更容易理解主动修改类定义带来的一些如同hotpatch的功能。

- 更多 -