摘要:
1. Watchdog初始 Watchdog的中文的“看门狗”,有保护的意思。最早引入Watchdog是在单片机系统中,由于单片机的工作环境容易受到外界磁场的干扰,导致程序“跑飞”,造成整个系统无法正常工作,因此,引入了一个“看门狗”,对单片机的运行状态进行实时监测,针对运行故障做一些保护处理,譬如 阅读全文
摘要:
1.日志获取 Watchdog相关的问题甚至需要以下所有的日志: logcat 通过adb logcat命令输出Android的一些当前运行日志,可以通过logcat的 -b 参数指定要输出的日志缓冲区,缓冲区对应着logcat的一种日志类型。 高版本的logcat可以使用 -b all 获取到所有 阅读全文
摘要:
Android系统中,有硬件WatchDog用于定时检测关键硬件是否正常工作,类似地,在framework层有一个软件WatchDog用于定期检测关键系统服务是否发生死锁事件。 watchdog的源码很简单,主要有两个功能 1监控system_server中几个关键的锁,原理就是在android_f 阅读全文
摘要:
ANR时间区别便是指当前这次的事件dispatch过程中执行findFocusedWindowTargetsLocked()方法到下一次执行resetANRTimeoutsLocked()的时间区间. 以下5个时机会reset. 都位于InputDispatcher.cpp文件: resetAndD 阅读全文
摘要:
ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。 造成ANR的场景: Service Timeout:比如前台服务在20s内未执行完成; 阅读全文
摘要:
SystemServer由Zygote fork生成的,进程名为system_server,该进程承载着framework的核心服务. 调用流程如下: 上图前4步骤(即颜色为紫色的流程)运行在是Zygote进程,从第5步(即颜色为蓝色的流程)ZygoteInit.handleSystemServer 阅读全文
摘要:
Zygote是由init进程通过解析 init.zygote.rc 文件而创建的,zygote所对应的可执行程序 app_process,所对应的源文件是App_main.cpp,进程名为zygote。 Zygote重启的情况(四种) servicemanager进程被杀; (onresart) s 阅读全文
摘要:
JIT与Dalvik JIT是"Just In Time Compiler"的缩写,就是"即时编译技术",与Dalvik虚拟机相关。 怎么理解这句话呢?这要从Android的一些特性说起。 JIT是在2.2版本提出的,目的是为了提高Android的运行速度,一直存活到4.4版本,因为在4.4之后的R 阅读全文
摘要:
##内部存储 总是可用的 这里的文件默认是只能被你的app所访问的。 当用户卸载你的app的时候,系统会把internal里面的相关文件都清除干净。 Internal是在你想确保不被用户与其他app所访问的最佳存储区域。 ##外部存储 并不总是可用的,因为用户可以选择把这部分作为USB存储模式,这样 阅读全文
摘要:
几个系统关键对象: ActivityManagerServices,简称AMS,服务端对象,负责系统中所有Activity的生命周期 ActivityThread,App的真正入口。当开启App之后,会调用main()开始运行,开启消息循环队列,这就是传说中的UI线程或者叫主线程。与Activity 阅读全文