Android Framework 框架测试之 关机

640?wx_fmt=gif

640?wx_fmt=gif

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

640?wx_fmt=jpeg

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

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

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 平台关机线程类frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java继承ShutdownThread 线程类:vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/MtkShutdownThread.java

1. Google 原生ShutdownThread实现

ShutdownThread 浅析总结

640?wx_fmt=png

ShutdownThread 浅析总结

ShutdownThread 类主要方法概览

640?wx_fmt=jpeg

ShutdownThread 类主要方法

部分静态变量如下:

640?wx_fmt=jpeg

部分静态变量

关机线程大致步骤

640?wx_fmt=png

关机线程大致步骤

ShutdownThread Run 方法实现

640?wx_fmt=png

Run 方法实现

发送关机广播

640?wx_fmt=png

发送关机广播

关闭Activity Manager

640?wx_fmt=jpeg

关闭Activity Manager

关闭PackageManager

640?wx_fmt=png

关闭PackageManager

关闭Radios

640?wx_fmt=png

关闭Radios

关闭StorageManagerService

640?wx_fmt=jpeg

关闭StorageManagerService

关闭 StorageManager

640?wx_fmt=png

关闭 StorageManager

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

640?wx_fmt=jpeg

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

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

640?wx_fmt=png

关机完成震动

shutdown 构造方法 概览

640?wx_fmt=png

shutdown 构造方法 概览

shutdown 构造方法

640?wx_fmt=jpeg

shutdown 构造方法

shutdownInner方法

640?wx_fmt=png

shutdownInner方法

CloseDialogReceive

640?wx_fmt=jpeg

CloseDialogReceiver

beginShutdownSequence

640?wx_fmt=png

beginShutdownSequence

关机进度条弹框showShutdownDialog

640?wx_fmt=jpeg

关机进度条弹框showShutdownDialog

Reboot 构造方法

640?wx_fmt=jpeg

Reboot 构造方法

重启进入安全模式 rebootSafeMode

640?wx_fmt=jpeg

重启进入安全模式 rebootSafeMode

  1. MtkShutdownThread

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

640?wx_fmt=jpeg

MtkShutdownThread 继承关系

MtkShutdownThread 概览

640?wx_fmt=png

MtkShutdownThread 概览

MtkShutdownThread 大致概览总结

640?wx_fmt=jpeg

MtkShutdownThread 大致概览总结

MTK 重写shutdownAnimationService方法

640?wx_fmt=jpeg

MTK 重写shutdownAnimationService方法

关闭背光灯 setBacklightOff

640?wx_fmt=png

关闭背光灯 setBacklightOff

delayForPlayAnimation

640?wx_fmt=jpeg

delayForPlayAnimation

重写 showCustomizedShutdownAnimation

640?wx_fmt=jpeg

重写 showCustomizedShutdownAnimation

Runnable mDelayDim

640?wx_fmt=jpeg

Runnable mDelayDim

bootanimCust 方法

640?wx_fmt=png

bootanimCust 方法

startBootAnimation

640?wx_fmt=png

startBootAnimation

重写 customizedShutdownSequence

640?wx_fmt=png

重写 customizedShutdownSequence

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

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

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

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

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

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

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

posted @ 2018-12-12 09:13  程序员Android的博客  阅读(164)  评论(0编辑  收藏  举报