极力推荐Android 开发大总结文章:欢迎收藏
程序员Android 力荐 ,Android 开发者需要的必备技能

本篇文章主要介绍 Android 开发中的 关机 部分知识点,通过阅读本篇文章,您将收获以下内容:

1.如何初步定位异常关机问题
2.关机流程上层浅析

欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。

1.如何初步定位异常关机问题

由于异常关机问题可能存在多种可能性(异常重启,异常关机,hang机,掉电),请务必厘清复现过程和手法,保留问题现场,以下信息请在提case的时候一起提供:

  • 1 . 确认是亮屏关机还是灭屏关机?关机时是否有播放关机动画?

如果有播放关机动画可以检查关机流程的调用是否有异常。

  • 2 . 是直接关机还是关机后会自动重启?

可以检查log中是否有走ShutdownThread或者reboot流程,是否有对应的exception或db产生。

  • 3 . 异常关机时,连上uart线是否可以吐log?插上usb后是否能显示关机充电动画?

如果可以吐log,可以通过log判断是hang机还是关机充电;若能正常显示关机充电动画可以确认之前的行为是关机而不是hang机。

  • 4 . 如果按Powerkey可以重新开机,请注意按powerkey的时长是多少?

如果是关机,按Powerkey 2~4s即可重新开机;如果是Hang机,按Powerkey要8s以上才会强制掉电重启。

  • 5 . 检查log中的Battery电压等信息,判断是否为低电或者电压波动异常大?

在 events_log 中 搜索关键字 battery_level,查看电池电量、电压、温度信息
04-20 17:18:49.211290 1035 1035 I battery_level: [37(电量),3682(电压),280(电池温度)]

  • 6 . 检查log中的Thermal信息,是否有电池温度或者板温过60度的情况?

同上5

  • 7 . 如果是电池本身的过流/过压保护,异常关机后按Powerkey不能重启,必须要拔插电池才能恢复。

  • 8 . 提供的log中请包括关机mobile log(最好能抓logcat和uart log),关机后再开机的mobile log(包括pl_lk log、kernel_log.boot、main_log.boot、last_kmsg、property、cmdline等信息),如果有exception信息请一并提供对应db文件。

    1. Android O 之后log提供注意事项

Android O 中 mtklog 和db 不在同一个目录,提交log 时需要同时导出来:

adb pull /sdcard/mtklog
adb pull /data/aee_exp
adb pull /data/vendor/mtklog/aee_exp

2.关机流程上层浅析

MTK 平台关机线程类
Android 关机线程实现类:
frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java
MTK 平台关机自定义 继承ShutdownThread 线程类:
vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/MtkShutdownThread.java

1. Google 原生ShutdownThread实现

ShutdownThread 浅析总结

ShutdownThread 浅析总结

ShutdownThread 类主要方法概览

ShutdownThread 类主要方法

部分静态变量如下:

部分静态变量

关机线程大致步骤

关机线程大致步骤

ShutdownThread Run 方法实现

Run 方法实现

发送关机广播

发送关机广播

关闭Activity Manager

关闭Activity Manager

关闭PackageManager

关闭PackageManager

关闭Radios

关闭Radios

关闭StorageManagerService

关闭StorageManagerService

关闭 StorageManager

关闭 StorageManager

播放关机动画,SystemServer 关闭结束

播放关机动画,SystemServer 关闭结束

关机完成震动,实现真正意义上的关机

关机完成震动

shutdown 构造方法 概览

shutdown 构造方法 概览

shutdown 构造方法

shutdown 构造方法

shutdownInner方法

shutdownInner方法

CloseDialogReceive

CloseDialogReceiver

beginShutdownSequence

beginShutdownSequence

关机进度条弹框showShutdownDialog

关机进度条弹框showShutdownDialog

Reboot 构造方法

Reboot 构造方法

重启进入安全模式 rebootSafeMode

重启进入安全模式 rebootSafeMode

    1. MtkShutdownThread

MTK 平台关机自定义 继承ShutdownThread 线程类:
vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/MtkShutdownThread.java
MtkShutdownThread 继承关系

MtkShutdownThread 继承关系

MtkShutdownThread 概览

MtkShutdownThread 概览

MtkShutdownThread 大致概览总结

MtkShutdownThread 大致概览总结

MTK 重写shutdownAnimationService方法

MTK 重写shutdownAnimationService方法

关闭背光灯 setBacklightOff

关闭背光灯 setBacklightOff

delayForPlayAnimation

delayForPlayAnimation

重写 showCustomizedShutdownAnimation

重写 showCustomizedShutdownAnimation

Runnable mDelayDim

Runnable mDelayDim

bootanimCust 方法

bootanimCust 方法

startBootAnimation

startBootAnimation

重写 customizedShutdownSequence

重写 customizedShutdownSequence

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

既然都看到这里,领两个红包在走吧!
以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

Android 手机关机流程及异常分析相关推荐

  1. Android手机启动流程与TEE OS

    2019独角兽企业重金招聘Python工程师标准>>> 转载:https://cloud.tencent.com/developer/article/1043659 一个移植了TEE ...

  2. Android 双卡双待手机解析短信异常分析及解决

    如有转载,请声明出处: 时之沙:http://blog.csdn.net/t12x3456 开发中,难免会遇到各种各样的适配问题,尤其是经过深度修改定制过的系统,有的无论是软硬件上都有很大的区别,这里 ...

  3. android直播流渲染,Android手机直播之处理技术分析

    前一篇我为大家介绍了Android手机直播的采集技术,这一篇继续为大家介绍直播流程中对视频和音频的处理技术.图玩智能科技为企业提供直播平台的二次开发服务以及各类app的开发,欢迎随时咨询www.toi ...

  4. android系统关机流程

    android系统都有一个关机按键,长按这个按键系统会进行关机操作.具体实现流程如下: 在android层通过系统调用reboot(arg)调用内核中的sys_reboot,具体流程如下: reboo ...

  5. android手机采集,Android手机直播之采集技术分析

    近两年来直播行业越来越火,图玩智能科技为企业提供直播平台二次开发服务以及各类app的开发,欢迎随时咨询www.toivan.com. 作为Android手机直播的研发,本着技术分享的精神,现在写一系列 ...

  6. android手机关机充满电,充电线不拔出开机,电量显示1%,手机显示充电越充越少的原因分析以及解决方法【图文教程】...

    智能手机对于现在的人来说并不陌生吧!大家也知道智能手机问世才短短的几年,但是在这几年里智能手机的发展非常地快,现在基本已经得到普及了.智能手机的功能多.网速快这一点都是可以肯定的,但是我们在平时使用的 ...

  7. 国内 Android 手机典型勒索软件详情分析(附解锁方法)

    事件说明 2017年2月13-17日,RSA Conference 2017 信息安全大会在美国旧金山Moscone中心隆重举行.大会第一天就是一系列关于Ransomware(勒索软件)的议题,而在刚 ...

  8. android 手机关机代码非root,怎么用代码判断android手机是否开启了ROOT 权限知道...

    满意答案 webber12333 2013.07.13 采纳率:48%    等级:12 已帮助:10765人 [Android]Android 代码判断是否获取ROOT权限 方法比较简单,直接粘贴代 ...

  9. FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程 的异常分析

    在 RISC-V-Reader-Chinese-v2p1.pdf 中RISC-V 中实现精确例外:保证异常之前的所有指令都完整地执行了,而后续的指令都没有开始执行(或等同于没有执行) 所有 RISC- ...

最新文章

  1. 女皇万岁!我们是来送礼的 ——阿里聚安全春天系列全套大礼包
  2. wmic 获取计算机ip,【已解决】xp系统下,受限用户如何用批处理在不使用wmic获取多个网卡的IP地址?...
  3. 数据增强,将数据增强后保存到本地
  4. 这些道理不懂,你注定就是穷打工的命!(转载)
  5. 太卷了~ 八股文,算法张口就来?2022版Java面试手册帮你全拿捏
  6. matlab处理svm的数据,SVM-GUI 使用支持向量机(SVM)算法进行处理数据,提取特征参数,并通过MATLAB界面显示相关数 238万源代码下载- www.pudn.com...
  7. shell脚本和python脚本和go脚本的区别_Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例-Go语言中文社区...
  8. 使用Fiddler对IPhone手机的应用数据进行抓包分析
  9. 让你的Python程序在用户面前以小概率崩溃
  10. python中字符串中的换行符号是什么_Python字符串中的换行符和制表符
  11. ROS学习笔记4(编译一个ROS Package)
  12. 有服主传送玩家指令_我的世界:不用指令能够到达边境之地吗?实验证明,根本就不可能...
  13. linux下mysql主从不同步
  14. Linux SHELL 命令入门题目(一)
  15. c++图书馆管理系统
  16. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.异常处理
  17. android+google+play,打开链接的google play商店在手机版android
  18. 南京信息工程大学 第二届程序设计大赛团队赛 试题
  19. tpshop php版本,TPshop安装向导 - Powered by TPshop
  20. 最简单人工智能python_如何从零学会人工智能(AI)Python?

热门文章

  1. uni-app上传文件并给文件添加水印
  2. UVa 1587 Box
  3. E: Package 'p7zip-full' has no installation candidate
  4. 计算机原理个人总结,北京工业大学 计算机组成原理 个人总结.doc
  5. MOS管栅极串联电阻作用
  6. java 程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知
  7. 深度学习,实现手写字体识别(大数据人工智能公司)
  8. 简单破解win2k8密码
  9. 18张含金量最高的大数据证书
  10. Kdenlive图解教程:使用Kdenlive快速剪切视频片段