2012-03-30 54 views
0

我編寫了我的第二個android應用程序,它根據某個時間表(僅限於現在的日期和時間)切換音頻配置文件....如果我通過eclipse使用模擬器運行代碼,代碼無任何問題。 。但是我最近導出了apk並將其安裝在Samsung Galaxy S2上,並添加了與仿真器相同的配置文件時間表,但由於某些奇怪的原因,第一次後timertask未執行...Android Dev:TimerTask和手機睡覺怪異也許?

For例如: 這裏是我的電話檔案計劃以及模擬器:

上午8時 - 下午5:30 - 工作

下午5:30 - 22:00 - 首頁

晚上10點 - 上午8時 - 睡眠

一旦上述計劃和我按在主activity..a後臺服務的啓動按鈕開關運行從一個配置文件到直到它被去激活...

我注意到了模擬器和我的手機之間的唯一區別是,模擬器屏幕永遠不會關閉...所以即時猜測模擬器不會休眠?然而,除了鎖定屏幕之外,我的手機屏幕在停用約30秒後關閉......此外,我打開手機上的USB調試並將其直接插入計算機中,代碼看起來像是執行,將一個配置文件切換到下一個,在我的手機上沒有任何問題......(請注意,當我正在進行此測試時,我在配置文件時間表中使用了更短的時間間隔)...其他詳細信息:我還添加了startForeground ()在我的服務代碼,並確保該服務沒有終止...

沒有人有什麼即時通訊丟失,或者我能做些什麼來解決這個奇怪的問題?...我做了張貼此之前的一些研究,並找到了幾個推薦使用的帖子:Android's PowerManager ...

感謝您的輸入

回答

3

沒有什麼奇怪的:如果手機睡着了,CPU關閉,你不能執行代碼。請勿在Android上使用TimerTask,請使用AlarmManager安排重複執行的任務。它在內核中實現,可以在必要時喚醒手機(這可能會對電池壽命產生負面影響,所以請謹慎使用)。也看看WakeLock的。

http://developer.android.com/reference/android/app/AlarmManager.html

+0

是啊,我正要通過提關閉這個線程什麼你剛剛告訴我...如果u有如何使用任何的例子將是有益的...林目前正在尋找在線的例子以及...謝謝 – 2012-03-30 13:11:52

+0

如果您使用PowerManager.PARTIAL_WAKE_LOCK的喚醒模式運行後臺服務,則CPU不會關閉。這樣,可以安全地使用TimerTask。 – 2013-07-27 10:16:18

+0

沒有什麼安全的,保持喚醒電池將會導致你的電池失效。 – 2013-07-27 10:35:00