2012-05-24 38 views
1

我正在編寫一個需要經常更新的Android AppWidget(是的,我知道,不應該那樣做,不管...)。我希望只有在可見的情況下才會更新,但令人煩惱的是,似乎沒有任何與WallpaperService.Engine.onVisibilityChanged(boolean visible)類似的內容。「睡眠」Android設備發生報警火災

這裏建議的方法是設置一個報警​​3210觸發更新每interval毫秒。這至少在睡眠時不會喚醒設備。

這就是我所做的。我PendingIntent看起來是這樣的:

final Intent intent = new Intent(context, CountdownWidgetService.class); 
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); 

final PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

CountdownWidgetService每次被觸發報警時間記錄一條消息。即使設備應該睡着,日誌消息也會顯示 - 但這正是我認爲不應該發生的事情。我的錯誤在哪裏?

回答

1

也許某些其他應用程序正在喚醒設備,並使用它執行警報。如果您使用AlarmManager.RTC,則意味着:'如果設備處於喚醒狀態或者等待喚醒並執行,則執行'。檢查logcat的看到發生了什麼,並使用此命令,看看有什麼其他的報警記錄:

adb shell dumpsys alarm 
+0

@Oderik你可能想補充這是一個評論,而不是編輯給我的職務。如果你想要,在下面添加它:編輯:耐心是關鍵:設備需要一些時間,實際上在屏幕關閉後(亞洲開發銀行斷開連接)睡着了。之後,警報不會啓動。 感謝您的建議,導致正確的調查。看到設備喚醒的頻率讓我想起了新的父母。 ;) –

+0

不,我確實想編輯答案,因爲它還沒有包含解決方案:在實際入睡之前,Android需要一些時間。但我想別人也會在評論中發現它。再次感謝! – Oderik

+1

它顯示爲我的答案編輯。順便說一句,「需要一些時間」才能入睡的原因是,某些應用程序持有喚醒鎖。默認情況下,Android屏幕關閉後會立即進入休眠狀態。應用可以請求它在完成處理之前保持清醒狀態,等等。http://developer.android.com/reference/android/os/PowerManager.WakeLock.html –

相關問題