-- 探索Android FrameWork底层开发视频全套
http://pan.baidu.com/s/1kUx35K7 密码:kjwv 解压密码:www.mukedaba.com_fw
-- Android Watchdog源码简析- https://www.cnblogs.com/GMCisMarkdownCraftsman/p/6117129.html
Android 系统稳定性 - Watchdog- http://rayleeya.iteye.com/blog/1963408
Watchdog - https://github.com/wojteklu/Watchdog
Watchdog位于frameworks/base/services/java/com/android/server/ ,系统框架服务目录下,可以看到名为Watchdog.java文件
由于Android的SystemServer内有一票重要Service,所以在进程内有一个软件实现的Watchdog机制,用于监视SystemServer中各Service是否正常工作。如果超过一定时间(默认30秒),就dump现场便于分析,再超时(默认60秒)就重启SystemServer保证系统可用性。
Watchdog是SystemServer中的独立线程,它隔一定时间间隔会向各监视线程调度一次检查操作。这个检查操作当中会调用已注册的Monitor对象。如果Monitor对象上产生死锁,或是关键线程hang住,那么该检查必定不能按时结束,这样就被Watchdog检查到。
Watchdog是一个软件实现的检测SystemServer进程内死锁或挂起问题,并能够从中恢复的机制。除了Watchdog外,Android中还有一些自检容错及出错信息收集机制,前者有ANR,OOM Killer,init中的重启机制等,后者有Dropbox,Debuggerd,Eventlog,Bugreport等
在 SystemServer里运行的服务中,最重要的几个服务应该数ActivityManager、WindowManager、 PowerManager 、InputManager、MountService(未启用)、NetworkManagementService。软件的WatchDog主要就是确保这几个服务发生死锁之后,退出SystemServer进程,让init进程重启它,让系统回到可用状态。
有可能会出现,应用连续ANR或者崩溃,已经启动服务等操作交替出现的时候,超过了TIMEOUT定义的60s,Watchdog monitor在监视到服务持有的锁超过60s没有释放的情况下,认为SystemServer进程异常,强行退出SystemServer进程,由init进程重新启动SystemServer
WatchDog主要作用:
1).接收系统内部reboot请求,重启系统。
2).监护SystemServer进程,防止系统死锁。
提供的问题定位方法:
1.ActivityManagerService.dumpStackTraces
2.dumpKernelStackTraces
被监控的关键服务,这些服务必须实现Watchdog.Monitor接口:
ActivityManagerService
InputManagerService
MountService
NativeDaemonConnector
NetworkManagementService
PowerManagerService
WindowManagerService
MediaRouterService
MediaProjectionManagerService