关机动作从按键触发中断,linux kernel层给android framework层返回按键事件进入  framework层,再从 framework层到kernel层执行kernel层关机任务。

长按键对应的handler代码:

frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java

Runnable mPowerLongPress;

private final Runnable mPowerLongPress = new Runnable() {

public void run() {

if (!mPowerKeyHandled) {

mPowerKeyHandled = true;

performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);

sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);

showGlobalActionsDialog();

}

}

};

mPowerLongPress 启动关机对话框

(frameworks/policies/base/phone/com/android/internal/policy/impl/GlobalActions.java)

如果我们选择Power OFF’,会调用ShutdownThread.shutdown.

启动关机线程执行关机动作。

frameworks/base/core/java/com/android/internal/app/ShutdownThread.java

真正关机 流程:

(1)广播全局事件, ACTION_SHUTDOWN Intent

(2)shutdown   ActivityManager 服务

(3) 停止蓝牙服务

(4) 停止 电话服务 (radio phone service)

(5)停止mount 服务

(6) 调用 Power.shutdown() 进入native 层

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

power的native实现代码:

frameworks/base/core/jni/android_os_Power.cpp

static void android_os_Power_shutdown(JNIEnv *env, jobject clazz)

{

sync();

#ifdef HAVE_ANDROID_OS

reboot(RB_POWER_OFF);

#endif

}

sync, reboot 为linux系统调用,进入linux内核关机流程。

android 关机 流程_android系统关机流程分析相关推荐

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

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

  2. Smartbi企业流程审批系统_流程审批软件推荐

    日常工作的各种办公场景中经常需要使用到流程,并且不同部门不同工作内容的流程都会有不同,思迈特软件Smartbi流程审批系统提供一整套完备的流程模块,可以实现工作中流程的灵活审批及动态流转. 学习审核流 ...

  3. android 输入法如何启动流程_Android输入法显示流程

    Android输入法显示方式大概分为两种:用户手动点击输入框和应用程序设置了输入法自动显示 本文基于Android9.x来分析 目录 1 :viewClicked流程 1.1 viewClicked ...

  4. 死亡搁浅运送系统服务器,死亡搁浅图文攻略 主线流程+订单系统+运送流程+建筑搭建 操作介绍-游侠网...

    [游戏介绍] 山姆·布里吉斯(Sam Bridges)必须直面因死亡搁浅而面目全非的世界.他手握残存的希望碎片,踏上征途,逐步重建已分崩离析的世界. 鬼魅横行,人类濒临灭亡.山姆身负重任,横跨满目疮痍 ...

  5. 死亡搁浅运送系统服务器,死亡搁浅图文攻略 主线流程+订单系统+运送流程+建筑搭建_操作介绍_游侠网...

    [游戏介绍] 山姆·布里吉斯(Sam Bridges)必须直面因死亡搁浅而面目全非的世界.他手握残存的希望碎片,踏上征途,逐步重建已分崩离析的世界. 鬼魅横行,人类濒临灭亡.山姆身负重任,横跨满目疮痍 ...

  6. 订单23系统服务器,死亡搁浅图文攻略 主线流程+订单系统+运送流程+建筑搭建 第3节芙拉吉尔 订单No23.系统服务器-游侠网...

    硬汉来电要山姆从去米尔人处取回被夺走的系统服务器并送返沿湖结点城. 来到目的地,系统服务器依旧是放在米尔人的寄存筒里.这里就可以用上之前获得的波拉枪了,波拉枪使用方法很简单,将光线对准敌人射击,即可束 ...

  7. 基于Android的地铁查询系统app

    本软件研究了一个Android平台的地铁查询软件实现方案,从数据库数据保存到地铁数据的提取,再到界面的友好展示,最后到一个成型软件的生成这样一个过程,研究了SQLite数据库在Android平台的应用 ...

  8. 基于Android的地铁查询系统app-计算机毕业设计

    项目介绍 本软件研究了一个Android平台的地铁查询软件实现方案,从数据库数据保存到地铁数据的提取,再到界面的友好展示,最后到一个成型软件的生成这样一个过程,研究了SQLite数据库在Android ...

  9. 计算机毕业设计之Android的地铁查询系统app(源码+系统+mysql数据库+Lw文档)

    本软件研究了一个Android平台的地铁查询软件实现方案,从数据库数据保存到地铁数据的提取,再到界面的友好展示,最后到一个成型软件的生成这样一个过程,研究了SQLite数据库在Android平台的应用 ...

最新文章

  1. Linux下多网卡MAC配置问题
  2. 使用puppeteer爬 EXTJS
  3. async function_掌握 Async/Await
  4. ARM平台下独占访问指令LDREX和STREX的原理与使用详解
  5. 文件夹修改名字 matlab,matlab用 movefile更改文件夹内文件名字
  6. php课程 4-15 数组遍历、超全局数组、表单提交数据(多看学习视频)
  7. C语言 函数声明和定义 - C语言零基础入门教程
  8. java中timer类包_Java~util包中Timer的使用, 演示cancel方法 和 对比schedule和scheduleAtFixedRate方法...
  9. linux云存储软件,推荐5个Linux云存储解决方案
  10. scala function从入门到理解
  11. 怎么修照片多余的部分_眉毛不会画怎么办?眉笔眉粉染眉膏到底怎么选?看完就会了...
  12. 记录一下Material Dialogs的使用
  13. 小网站云服务器配置推荐,小网站云服务器配置推荐
  14. 数据库云管平台 zCloud v3.5发布,智能化和国产数据库支持能力再增强
  15. Java和JavaScript有什么区别?
  16. 【各种接口】USB接口、rj11和rj45
  17. 最大数字字符串(leetCode179)
  18. iOS开发之Objective-C(基础篇)-李飞-专题视频课程
  19. VScode修改文件编码
  20. InstallShield2015 制作安装软件时,提示File not found. An error occurred mering Module -4075

热门文章

  1. 学习AI人工智能,你必须要知道的4件事!
  2. 分析N沟道MOS管和P沟道MOS管在电路中的详细应用
  3. js台阶算法问题(上台阶模拟器)
  4. Linux 打包压缩-文件打包-打包工具【tar】命令使用简介
  5. python 函数式编程包_Python——详解函数式编程与闭包
  6. svn提交代码到远程服务器
  7. 大计基编程题(第十二周)
  8. 计组_定点数一位乘_布斯公式
  9. 【在线翻译英文】的网站
  10. 一加7t人脸识别_一加7pro有人脸识别吗一加7和一加7pro的区别