ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2014年4月15日 星期二

PowerOff , Shutdown..

實際上.. Power Off, Hibernation, Screen Off 都是..
  • PhoneWindowManager.java 的 key handler 處理 Power Key
  • 叫起 Global Dialog, 畫出 Power Off Dialog, 或是直接 call ShutdownThrea.
  • ShutdownThread, broadcast message, call 底層的 reboot 或 shutdown
ShutdownThread:

重要變數就是 mReboot...
決定是要 reboot 還是關機。
reboot 通常是作 recovery 時要的。

public static void shutdown(final Context context, boolean confirm)

confirm 是說,需不需要 ShutdownThread 畫出 Dialog 讓 user confirm


最後 call beginShutdownSequence()
他基本就是 啟動 ShutdownThread()..

ShutdownThread 的主體 run() 被改寫了。
原來是作 reboot 和 poweroff

這裡,power off 被改成 hibernation
--- 所以,系統已經沒有辦法 power off 了.....

他直接用了 mReboot 變數:
 if(mReboot)
    reboot
 else
    hibernation

所以沒辦法達到三個狀態選擇。 (真懶)

又因為 run( ) 是 ShutdownThread 的主體,所以沒版法作兩套,讓 caller 決定 run 哪一個。
所以只好用醜陋的方法。

再加一個變數 IWantToPowerOff -- 代表真的是要PowerOff, 不是 Hibernation

沒有留言:

標籤

網誌存檔