android关机重启流程,不能完全说是原创,只是自己一步步跟下来的学习总结。

1、

frameworks/base/core/java/android/os/PowerManager.java

public void reboot (String reason)

接口的作用就是重启设备,而且,就算重启成功了也没有返回值。

需要包含REBOOT权限,也就是android.permission.REBOOT

唯一参数reason代表需要的特定重启模式,比如recovery,当然也可以为null。

mService为IPowerManager Binder接口服务。

2、

frameworks/base/core/java/android/os/IPowerManager.aidl

3、

frameworks/base/services/java/com/android/server/power/PowerManagerService.java

4、

frameworks/base/services/java/com/android/server/power/ShutdownThread.java

这里代码就不截图了,ShutdownThread.java里搜索reboot或shutdown。

reboot函数的说明是需要重启,且不是安全模式,重启参数为传递下来reason,shutdownInner的confirm参数是用来设置是否有确认提示框的,通过reboot接口调用重启是没有的,为false。

重启的实现在run()中,因为ShutdownThread是Thread的扩展,所以run会自动运行。

run()中,在重启前会将重启原因写入sys.shutdown.requested,如果没有则为空,如果是安全模式还会将persist.sys.safemode置1,之后会进行一些关机前的预处理,关闭ActivityManager以及MountService,最终调用rebootOrShutdown进行关机操作。

rebootOrShutdown函数中如果确认重启,则调用PowerManagerService的lowLevelReboot函数,参数就是传递下来的reason。如果不是重启,即mReboot=false,那就是需要关机了,在shutdown函数中就能够知道。关机的时候需要震动,就是这里了SHUTDOWN_VIBRATE_MS,默认的定义是500ms。

但是在代码上看,无论如何,最后都会调用一下lowLevelShutdown函数,也就是关机。逻辑上,这里可能是个问题,但是实际中,如果重启操作能够调用成功的话,整个系统都重启了,后边的代码当然不可能执行到了。

5、lowLevelReboot和lowLevelShutdown路径

frameworks/base/services/java/com/android/server/power/PowerManagerService.java

6、下面看看kernel中怎么执行的

kernel/sys.c

。。。

在此函数中,首先会检测权限问题,只有超级用户才可以执行关机重启系统的操作。

重启调用的是kernel_restart,区别是参数是不是空,关机则调用kernel_power_off()。继续跟下去一目了然,我这里就不详细说了,有兴趣的同仁可以参考一下这个:

http://blog.sina.com.cn/s/blog_6695f9eb0101hse4.html

android关机重启流程代码相关推荐

  1. Android关机重启流程

    一,概述 重启动作从按键触发中断,linux kernel层给Android framework层返回按键事件进入 framework层,再从 framework层到kernel层执行kernel层关 ...

  2. android关机分区卸载,Android关机重启流程(二)

    一.回顾 先回顾下上部分得分析,从最开始的PM.reboot(),经过层层调用,最终调用 SystemProperties.set("sys.powerctl", "re ...

  3. android开关机日志_(android 关机/重启)Android关机/重启流程解析

    --------------------------------Introduction-------------------------- 1. 在PowerManager的API文档中,给出了一个 ...

  4. VSAN集群关机重启流程

    VSAN集群关机重启流程 最近对一家用户实施搬迁机房,数据中心核心业务运行在VSAN中,vCenter的版本是7.0.3.00100,ESXi的版本是6.5.0.8294253 简单的就是一个7.0V ...

  5. Android 12 关机重启流程

    文章托管在gitee上 Android Notes , 同步csdn 本文基于Android12 分析 关机流程 Android上层触发关机的入口很多,但最终几乎都是调用ShutdownThread. ...

  6. android 关机 流程_Android系统关机的全流程解析

    在PowerManager的API文档中,给出了一个关机/重启接口: public void reboot (String reason) 对于这个接口的描述很简单,就是几句话. 接口的作用就是重启设 ...

  7. android关机充电流程、充电画面显示

    一.Android正常开机流程.关机充电流程 在写这篇文章之前我们先看两个流程:正常开机流程,关机充电系统启动流程 1.正常开机流程,按开机键. 可大致分成三部分 (1).OS_level:UBOOT ...

  8. android 电池(二):android关机充电流程、充电画面显示

    上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下android关机充电是怎么.充电画面显示是怎么实现的,这个在工作中也比较有用,我们开始做这一块的时候也走了不少的弯路.我记得我 ...

  9. android 电池(二):android关机充电流程、充电画面显示【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/8498580 上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下a ...

最新文章

  1. 我最喜欢的几个苏州美食
  2. drive数据集_运动想象,脑电情绪等公开数据集汇总
  3. codeblocks无法打开文件kernel32.lib
  4. 【电子电路】上拉电阻与下拉电阻有什么作用
  5. 陶哲轩的10岁与30岁
  6. AJAX Tookits -- ConfirmButton
  7. c语言中通过指针引用数组,C语言基础(二)
  8. 浅谈云网融合与SD-WAN
  9. [xcode]instruments来检验你的app
  10. odoo中tree视图上面添加按钮并绑定事件
  11. Quartus中Tools->Netlist Viewers->RTL Viewer
  12. 更改项目文件夹图标(程序图标)
  13. 练习--LINUX进程间通信之有名管理FIFO
  14. 记一次部署发现r2dbc连接数据库问题
  15. 从阿里投资B站看动漫IP,二次元市场蕴含了怎样的价值?
  16. [蓝桥杯Python]:跑步训练----小蓝每天都锻炼身体。正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一-或月初,小蓝也是跑2千米。小蓝
  17. java水仙花数(详解)
  18. linux掩码,linux文件权限掩码umask
  19. 听完网易大佬描述 “ 软件测试工程师的一生 ”,我哭了!
  20. 【Oracle】6.JDBC

热门文章

  1. GitHub开源神器:教你如何实现 PDF 转 Word
  2. 计算机函数名功能,修改计算机名的 API 函数 SetComputerName
  3. 【校招笔试】网易校招网络笔试题,菜的抠脚,蠢的流泪
  4. javaWEB如何实现一个电影票预定购票系统javaee电影选票选座平台
  5. 如何恢复删除的微信记录?恢复删除记录的方法
  6. chapter3 转录组学
  7. k8s 应用更新策略:灰度发布和蓝绿发布
  8. Idea自动导包如何设置,教你两步完成!
  9. word不能保存, 不能另存, 保存按钮 另存菜单不可用 的解决方法
  10. [Gym 102135][B - Freebie]2017-2018 8th BSUIR Open Programming Contest