稳定性分析4 重启阶段123

如何判断单板重启是属于整机重启,还是系统重启,首先我们要搞清楚Android系统开机过程大概分为几个步骤。Android系统开机的过程大概分为第三个阶段,

第一阶段为Linux Kernel引导init启动阶段,对应的就是我们的开机静态log,这段时间的开机是连不上adb的,且这段时间发生的开机异常基本可以确定跟上层框架没有关系。

第二阶段为init程序引导System Server进程启动以及引导其中重要服务(例如SurfaceFlinger、Zygote、Vold)启动,其实就是加载init.rc文件上定义的系统重要服务。

第三阶段 :System Server进程引导系统中的其它重要服务(例如窗口管理服务、包管理服务、Activity管理服务等)。

Android系统重启只包括第二和第三两个阶段,从现象看即重启时出现的是动态菊花界面,而不是静态的华为log界面。

从log中如何判断系统是Android系统重启还是整个机器的重启,有一个较为实用的方法,我们在Log中找到Zygote或者 SystemServer两个进程的进程号,如果这两个进程的进程号发生了改变,(有进程重启 重启之后的进程号会变得很大)且相差值较大时,且其他重要进程例如vold、netd等进程的进程号没有发生改变,就可以断定单板是系统重启 ,如果其进程号较小,一两千左右,则可以断定单板重启是整机重启。通常可以结合关键字“Preloading classes”或者“Boot is finished”来使用,在adb log中搜索该关键字,只要出现,即说明系统发生了重启,多次出现则说明系统多次发生重启,因为不管整机重启还是系统重启,zygote进程都会重新加载类,即会打印该关键字。

日记本
相关推荐
使用Flutter重构斗鱼APP
阅读 5449
准备报考MBA?不能错过的MBA公开课!
广告
安卓那些你不得不收藏的开源库
阅读 968
程序设计的5个底层逻辑,决定你能走多快
阅读 4697
真的,只要给自己30天,你也可以拥有这些转变
阅读 7347

发布了81 篇原创文章 · 获赞 0 · 访问量 1301

猜你喜欢

转载自blog.csdn.net/qq_42894864/article/details/104044967