Android TimerTask总是不被调用(当手机未被调试时,通常不会调用)

时间:2012-03-10 04:01:10

标签: android audio timer handler timertask

我无法识别Android TimerTask上的问题(我相信)让我发疯,

场景是:我在拨打电话后使用PhoneStateListener启动计时器,并在一定的通话时间后重现声音。

一切都很完美但是一旦我没有进入调试模式(或者只是将手机插入电脑),声音就不会一直响起,这些时候大多数都不会发声。

我最大的问题是我无法清楚地识别问题,因为这只会在手机拔掉电源时无法读取日志。我只能重现一次这个问题(调用后没有声音)并读取有关它的日志,我意识到:onCallStateChanged被调用,Timer正常,但TimerTask从未被调用(或调度)。

因此,在阅读了一些问题之后,我使用了Handler而不是Timer。但我有完全相同的问题。实际上,使用Handler时,只需插入和拔出手机就可以轻松再现这个问题(使用Timer会更难以重现无声问题)。

我做错了还是需要实施别的东西?

任何评论将不胜感激, 提前致谢

修改

显然,使用Handler会发生这种情况,因为电话一开始就会进入睡眠状态。但是,使用wake_lock无法阻止这种情况,当手机处于睡眠状态时,运行线程还有其他任何改动吗?

1 个答案:

答案 0 :(得分:0)

好吧,正如我所说,这个问题是电话在通话期间停止计时。我结束了使用AlarmManager。

重要的是要注意AlarmReceiver必须是公共类,否则永远不会调用receive方法。

然而,我仍然无法理解为什么Timer有时会工作,有时也不会。

此致