|
嵌入式系統一般都有一個關機按鍵,長按這個按鍵系統會彈出關機對話框,提示關機確認, 關機動作從按鍵觸發中斷,linux kernel層给android framework層返回按鍵事件進入 framework層,再從 framework層到kernel層執行kernel層關機任務。 長按鍵對應的handler代碼:
frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java
private
final Runnable mPowerLongPress = new Runnable() { 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 關機 流程分析
最新推荐文章于 2022-09-23 16:03:25 发布
本文详细解析了安卓系统中长按关机按键触发的关机流程,从按键事件的处理到内核层面的关机操作,涉及Android Framework、Service Manager、Kernel等组件交互过程。
2960

被折叠的 条评论
为什么被折叠?



