czh wrote:
我自以為是的另外一種...(恕刪)
我想插電時鬧鐘會準時,
是因為內建的電源管理系統 知道現在是使用AC電,
所以沒必要去進行任何省電操作, 例如進入深睡眠等...
其實這問題, 在我剛買Milestone 還是 2.0 時, 已察覺到.
當時剛買回來, 什麼也還沒安裝,
試了其他功能後, 想說試試鬧鐘會不會有問題,
(因為smartphone 通常都比較多 bug,
就像以前用HTC WM機, 關機後由Unattented -> Suspended 時,
有時會一睡不起, 別說鬧鐘, 連電話都不能接
)就覺得好像設定後沒反應... 但後來睡覺一直都是充電的,
所以就沒再理會這個問題......
鬧鐘程序是Android系統預設的, 我不相信Motorola會改,
但鬧鐘是使用系統中提供的 AlarmManager API 來運作的,
而這個API應該是HAL (Hardware Abstraction Layer),
就是說這個API的底層是由Motorola提供的 (因為手機在深睡眠時, 只有硬體中斷才能把CPU喚醒),
這個API 可以設定時間, 把系統喚醒來執行指定的程序.
這樣的情況, 很可能是AlarmManager沒有在指定時間把手機喚醒,
要是情況真的這樣, 系統中任何在深眠時需要喚醒的服務, 也會一併受影響.
在下面logcat中, 可以看到系統在18:59:54後,
開始進入深眠狀態(因為再沒有訊息),
而在19:06:31才開始喚醒,
喚醒是為了呼叫 預定了在19:05:00.000 PM 要執行的AlarmClock...
03-28 18:59:46.117 D/dalvikvm( 1486): GC freed 80 objects / 4880 bytes in 377ms
03-28 18:59:54.698 D/NetworkLocationProvider( 1269): onCellLocationChanged [8850,6562]
03-28 19:06:31.551 V/AlarmClock( 2287): AlarmReceiver.onReceive() id 3 setFor 19:05:00.000 PM
03-28 19:06:31.551 V/AlarmClock( 2287): Acquiring cpu wake lock
03-28 19:06:31.566 I/ActivityManager( 1269): Starting activity: Intent { flg=0x10040000 cmp=com.android.alarmclock/.AlarmAlertFullScreen (has extras) }
03-28 19:06:31.816 D/dalvikvm( 1269): GC freed 21634 objects / 1050224 bytes in 145ms
03-28 19:06:32.043 V/AlarmClock( 2287): Acquiring cpu wake lock
03-28 19:06:32.262 I/power ( 1269): *** set_screen_state 1
03-28 19:06:32.270 D/Sensors ( 1269): using sensors (name=sensors)
03-28 19:06:32.309 I/ActivityManager( 1269): Displayed activity com.android.alarmclock/.AlarmAlertFullScreen: 740 ms (total 740 ms)
03-28 19:06:32.379 I/=====suggestion=====( 1317): switch to qwerty mode, enable?true
03-28 19:06:32.637 W/IInputConnectionWrapper( 2287): showStatusIcon on inactive InputConnection
03-28 19:06:32.637 W/IInputConnectionWrapper( 2287): clearMetaKeyStates on inactive InputConnection
03-28 19:15:43.870 D/dalvikvm( 1269): GC freed 6484 objects / 309208 bytes in 119ms
03-28 19:15:43.909 D/LockPatternKeyguardView( 1269): LockPatternKeyguardView ctor: about to createUnlockScreenFor; mEnableFallback=false
03-28 19:15:43.955 D/LockPatternKeyguardView( 1269): createUnlockScreenFor(Pattern): mEnableFallback=false
03-28 19:15:43.963 D/LockPatternKeyguardView( 1269): onScreenTurnedOn
03-28 19:24:31.762 E/WeatherEngine( 1456): queryString = http://motor.accu-weather.com/widget/motor/weather-data.asp?location=ASI|HK|HK%2D%2D%2D|HONG+KONG&metric=1
03-28 19:24:31.777 E/WeatherEngine( 1456): Error Happen
03-28 19:24:31.777 E/WeatherWidgetProvider( 1456): failed to get weather info from server
03-28 19:24:31.785 E/WeatherEngine( 1456): queryString = http://motor.accu-weather.com/widget/motor/weather-data.asp?location=ASI|HK|HK%2D%2D%2D|HONG+KONG&metric=1
03-28 19:24:31.785 E/WeatherEngine( 1456): Error Happen
03-28 19:24:31.785 E/WeatherWidgetProvider( 1456): failed to get weather info from server
03-28 19:33:42.541 V/AlarmClock( 2287): AlarmReceiver.onReceive() id 3 setFor 19:30:00.000 PM
03-28 19:33:42.541 V/AlarmClock( 2287): Acquiring cpu wake lock
03-28 19:33:42.557 I/ActivityManager( 1269): Starting activity: Intent { flg=0x10040000 cmp=com.android.alarmclock/.AlarmAlertFullScreen (has extras) }
03-28 19:33:42.784 V/AlarmClock( 2287): Acquiring cpu wake lock
03-28 19:33:43.088 I/power ( 1269): *** set_screen_state 1
03-28 19:33:43.088 D/Sensors ( 1269): using sensors (name=sensors)


























































































