上一篇文章我们虽然通过 tombstoned Log 推断出 audioserver 崩溃的原因就是系统调用内核接口时发生阻塞,导致 TimeCheck 检测超时异常而崩溃,但并没有实质性的证据证明是 kernel 层出现问题导致的崩溃,因此这里我们继续看一下 TimeCheck 的检测原理。
一、TimeCheck机制
TimeCheck 是 Android 多媒体框架中的一个重要组件。主要实现了超时检测功能,用于监控多媒体操作是否在规定时间内完成。
1、实现机制
线程监控:使用单独的监控线程来检查操作是否超时;
定时器:基于 ALooper 和 AMessage 实现定时机制;
回调系统:超时发生时通过回调通知系统。
2、异常信息
07-04 10:46:39.637 411 1957 F : TimeCheck timeout for IAudioPolicy