編輯:關於Android編程
正文
關機動作從按鍵觸發中斷,linux kernel層給android framework層返回按鍵事件進入 framework層,再從 framework層到kernel層執行kernel層關機任務。
長按鍵對應的handler代碼:
frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java
Runnable mPowerLongPress;
[java]
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();
}
}
};
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
[java]
static void android_os_Power_shutdown(JNIEnv *env, jobject clazz)
{
sync();
#ifdef HAVE_ANDROID_OS
reboot(RB_POWER_OFF);
#endif
}
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監聽返回按鈕事件的方法。分享給大家供大家參考。具體如下:用戶在點擊手機的返回按鈕時,默認是推出當前的activty,但是有時用戶不小心按到返回
本文講實現一個自定義列表的Android程序,程序將實現一個使用自定義的適配器(Adapter)綁定 數據,通過contextView.setTag綁定數據有按鈕的Lis
Android手勢解鎖密碼效果圖 首先呢想寫這個手勢密碼的想法呢,完全是憑空而來的,然後筆者就花了一天時間弄出
本文介紹Android平台進行數據存儲的五大方式,分別如下:1 使用SharedPreferences存儲數據2 文件存儲數據 &nbs