> 文章列表 > cm-14.1 Android系统启动过程分析(n)- 关机/重启/重置/升级的那些事(偏嵌入式方向)

cm-14.1 Android系统启动过程分析(n)- 关机/重启/重置/升级的那些事(偏嵌入式方向)

cm-14.1 Android系统启动过程分析(n)- 关机/重启/重置/升级的那些事(偏嵌入式方向)

声明

  • 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的。
  • 本文参考了一些书籍的若干章节。
  • 本文使用的代码是LineageOS的cm-14.1,对应Android 7.1.2,可以参考我的另一篇博客:如何下载Nexus5的LineageOS14.1(cm-14.1)系统源码并编译、刷机

1 关机和重启

  按下电源键,会产生一个中断,然后该中断会被Linux内核捕获到,并被内核转换成一个输入事件,再作为一个EV_KEY/KEY_POWER/DOWN事件传给Android运行时(Runtime)。和其他所有事件一样,该事件会依次交给Android的InputReader和InputDispatcher(这两个都是system server线程),后者会把该事件传递给WindowPolicy对象。如果按键的时间足够长(这个时长是定义在 ViewConfiguration的GLOBAL_ACTIONS_KEY_TIMEOUT上的常量500毫秒)默认的WindowPolicy对象(com.android.internal.policyimpl.PhoneWindowManager)就会拦截到该事件,并(通过调用GlobalActions.showDialog()方法) 在屏幕上弹出一个菜单。
在这里插入图片描述
  如果用户确实是要关机,