由于《深入理解Android 卷一》和《深入理解Android卷二》不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容 第4章 深入理解PackageManagerService本章主要内容:详细分析PackageManagerService本章所涉及的源代码文件名及位置:· SystemServer.javaframeworks/base...
分类:
移动开发 时间:
2015-08-03 11:34:47
阅读次数:
251
许久就想写篇关于servicemanager的文章,之前对服务启动顺序诸如zygote,systemserver,等启动顺序理解有点混乱,现做如下理解分析:
其实init进程启动后,ServiceManager进程的启动,远比zygote要早,因为在启动zygote进程时需要用到ServiceManager进程的服务。ServiceManager是一个守护进程,它维护着系统服务和客户端的...
分类:
移动开发 时间:
2015-07-27 15:02:10
阅读次数:
172
DropBox会在以下时机抓取相关信息:
a、出异常关机前
SystemServer会收集以下类型报错:watchdog、anr、wtf、lowmem、native_crash、crash
TAG = watchdog、anr、wtf、lowmem、native_crash、crash
此时是通过ActivityManagerService.addErrorToDr...
分类:
其他好文 时间:
2015-07-10 19:04:51
阅读次数:
126
android的后台存在很多service,它们在系统启动的时候被SystemServer开启,来为系统的正常运行做支撑。Activity中要调用这些service就得使用getSystemService方法,这也是Activity很重要的一个API。根据传入的Name取得对应的Object,然后转换成相应的服务对象。
传入的Name
返回的对象
说明...
分类:
其他好文 时间:
2015-07-10 13:35:23
阅读次数:
119
欢迎转载。转载请注明:http://blog.csdn.net/zhgxhuaa在ZygoteInit的main()方法中做了几件大事。当中一件便是启动Systemserver进程。代码例如以下:@/frameworks/base/core/java/com/android/internal/os/...
分类:
其他好文 时间:
2015-07-05 12:18:06
阅读次数:
126
一、初步分析结论sensorservice多线程机制存在问题,导致在disable accel sensor并释放相应内存和数据之后,有很小的概率发生继续读取到未处理完的sensor事件,从而继续使用相应的内存和数据,并且没有做相应的防御保护措施,最终引起指针地址操作错误。二、解决方案1、首先在可能发生错误的地方做好防御保护措施2、对多线程进行同步,对于临界变量的操作都放置到临界区中,使用锁来保护...
分类:
移动开发 时间:
2015-07-03 17:35:14
阅读次数:
139
一、出问题的场景1、Sensorservice线程正在处理compass sensor事件的过程中,检查了一次buffer的指针的有效性,并在稍后会传递到AKM获取数据的函数接口中使用2、Sensorservice线程所在进程的负责跨进程通信的Binder线程在sensorservice线程检查buffer指针之后没有真正使用之前,收到了disable compass sensor的请求,从log...
分类:
移动开发 时间:
2015-07-03 17:31:28
阅读次数:
194
首先看一张Android系统启动流程图: 一个进程最重要的两项指标一个是启动了Binder线程池,也就是可以进程Binder进程间通信了。另一个是启动了Handler消息循环,可以使用了消息循环机制。 1、那么systemserver进程是什么时候实现上面两个机制的呢?见代码: 启动了Binder线程池。是子线程池。public static final void zyg...
分类:
移动开发 时间:
2015-06-28 12:43:27
阅读次数:
161
由于Android的SystemServer内有一票重要Service,所以在进程内有一个软件实现的Watchdog机制,用于监视SystemServer中各Service是否正常工作。如果超过一定时间(默认30秒),就dump现场便于分析,再超时(默认60秒)就重启SystemServer保证系统可用性。同时logcat中会打印类似下面信息:
W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in monitor com.android.se...
分类:
移动开发 时间:
2015-06-19 00:04:17
阅读次数:
214
一、PackageManagerService启动过程 SystemServer首先启动,创建一个ServerThread线程来启动所有Android核心服务,其中PackageManagerService.main方法启动了PackageManagerService。 main方法中就是实例化.....
分类:
移动开发 时间:
2015-06-04 08:35:35
阅读次数:
328