0

我正在开发一个使用服务作为 Contdown 的应用程序。当用户从活动开始倒计时并且在按下睡眠按钮后活动进入后台时,我正在使用此服务继续倒计时。计数完成后,服务会显示带有铃声的通知。

我使用 wait() “计算”服务中的时间。当我在真实设备上使用应用程序但处于调试模式时会发生奇怪的行为。附加 Eclipse 调试器后,Service 运行良好;当我在未连接 Eclipse 调试器的设备上测试应用程序时,倒计时完成时服务不会显示通知,除非按下睡眠按钮并激活监视器 - 然后激活通知和铃声。

Can anyone can explain what causes this strange behavior? Maybe the issue is is related to Wake lock or a similar construct?

4

2 回答 2

1

wait()如果设备进入睡眠状态,则不能保证呼叫等待正确的时间。您应该使用AlarmManager来触发倒数计时器。

于 2013-03-23T19:25:16.127 回答
1

我使用 wait() “计算” Service 中的时间。

那是糟糕的编程习惯。即使您没有占用 RAM,时间也会流逝。

任何人都可以解释为什么这种奇怪的行为?

设备睡着了。这是正常且可取的行为,以延长电池寿命。插入 USB 线后,设备无需进入睡眠状态,如果您在开发者选项中勾选了相应的选项,则设备在插入时不会进入睡眠状态。

也许与唤醒锁有关

请不要使用 aWakeLock让设备保持唤醒状态,以便您观看时钟滴答作响。请AlarmManager在倒计时结束时使用来获得控制权。您可以使用_WAKEUP-style 闹钟来安排唤醒设备,BroadcastReceiver此时您可以控制“启动通知和铃声”。作为奖励,您可以摆脱您的服务,以便您的应用程序可以在用户设备上更好地运行。

于 2013-03-23T19:24:42.787 回答