Milestone 2.1深眠後讓鬧鐘沒依設定時間響

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)
我的推論是,Android 系統是每隔一段時間去喚醒每一個程序來處理事情。
在關閉螢幕不插電的狀況下,這個喚醒的間隔時間會加長,只有一些重要的
程序不會有變,如3G網路和電話系統。所以鬧鐘程序只有在它被喚醒時才
能知道要不要響,所以才會每次延遲的時間都不一樣。鬧鐘會準時響的是
剛好鬧鐘被喚醒的時間和所設定的時間剛好一樣。

因為沒用過其它 Android 手機,所以不知道其它的 Android 手機是不是也
鬧鐘不準。如果是只有 milestone 的不準,那就是應該有辦法能夠將鬧鐘
程序提升為重要程序,讓它在睡眠的時候也會按時被喚醒。只是這個辦法不
知道要不要改 kernel。
eagle524 wrote:
我的推論是,Andr...(恕刪)


電話和短信息(SMS) 應該是由GSM Hardware (Baseband) 直接發出interrupt來喚醒的,
並不是使用Timer Interrupt 或 Alarm Service, 所以並沒有影響....

至於"喚醒的間隔時間會加長"的推論, 我想是正確的,
很大可能是於電源管理上的考慮,
只設定一個"類似固定"的時間間隔來檢查需要喚醒的項目,
而不是根據實際需要來喚醒.

但事實還是需要看看源始碼才能確定....
今天7:00的鬧鐘
7:14分才響
真的是完全沒準則
雖然不知道你在害羞啥?有問題就光明正大的版上討論,別人有相同問題才能一起受益,把問題PM我也沒用,會答的在討論區已經答了,發私訊問絕對不回。
我的MS 鬧鐘每天都很準時,Push mail 以及 簡訊 也都很ok...不會睡死了..
我有裝第三方的exchange收信同步軟體 .. TouchDown .
也許是第三方同步軟體不讓系統睡死...

但是建議看一下底下的設定..

1. 時間是用自動同步系統時間.
2. Background date , Auto-sync 都有打勾.
3. PUSH mail 有開啟..

也許這些設定會影響系統睡眠...
或是抓TouchDown 來試看看,這是我用過最好用的exchange 同步軟體,也是第二各有付費的軟體..
第一個是 document to go..

題外話.. Android 系統要弄到可以用...要比WM 多花一些錢買軟體...WM 系統內含了這些基本的東西..
我的鬧鐘本來也是會"睡"死,之前安裝過Timeriffic時,也是會跟著睡死,
可是後來Timeriffic出了更新後,不但可以設定何時開啟飛航模式,而且進了飛航模式也不會睡死,
還會在指定的時間關閉飛航模式,而我的鬧鐘也跟著就正常了起來了!
我想有鬧鐘會睡死的朋友,可以試試看安裝Timeriffic試試看!不過記得這套程試要在Task管理程式中設定除外設定,以免被Task管理程式給砍了!
鬧鐘不定時響, 看來跟APK似乎也有關係, 我把Atrackdog移除, 鬧鐘就恢復正常, 各位不妨試試
我的鬧鐘一直都很準時的響起,因為我每天睡前都將手機放置在底座上,
但今天早上原來八點應該響的,聽到鬧鐘一看時間,已經八點15分了
原因應該是昨晚沒有將手機放置在底座上,導致發生鬧鐘延遲響起
還好公司不用打卡,不然遲到可不是一件好事情..
剛剛已經按照其他大大的經驗,安裝了Timeriffic,並且設定七點開啟手機鈴聲,
看看明早是否可以準時響起


已經刷過
泰國SHOLS_U2_02.31.1
德國SHOLS_U2_02.34.0
都沒改善鬧鐘遲響的問題
昨晚刷了德國SHOLS_U2_02.34.0
今天早上7:00的鬧鐘到7:11才響
雖然不知道你在害羞啥?有問題就光明正大的版上討論,別人有相同問題才能一起受益,把問題PM我也沒用,會答的在討論區已經答了,發私訊問絕對不回。
我裝了Timeriffic以後今天早上鬧鐘是準時響的

不過我睡前把電池充到100%
睡覺時關閉Wifi、BT(BlueTooth)、3G
用Timeriffic設定凌晨1點進入飛航模式,早上6點50離開飛航模式
而且還用TaskPanel清過一次記憶體(避免有程式在背景運算耗電)
早上起來電池卻只剩80%

但是在裝Timeriffic之前,一樣關閉Wifi、BT、3G,但是沒有進入飛航模式
睡前電池充滿100%,醒來也還是100%...

所以我覺得可能是Timeriffic讓手機不會進入深眠狀態
鬧鐘才能準時響...但副作用卻是會比較耗電!?

以上只是小弟一番淺見...如果有誤請大大指正
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!