【问题标题】:Android TimerTask not being called always (mostly not called when phone is not being debugged)Android TimerTask 不总是被调用(主要是在手机没有被调试时不被调用)
【发布时间】:2012-03-10 04:01:10
【问题描述】:

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

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

一切都很完美,但只要我不处于调试模式(或者只是将手机插入计算机),声音就不会总是响亮,大多数时候它不会顺便发声。

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

所以,在阅读了这里的一些问题之后,我使用了 Handler 而不是 Timer。但我有完全相同的问题。事实上,使用 Handler 时,通过简单地插拔手机就更容易重现此问题(使用 Timer 更难重现无声音问题)。

我是在做错事还是需要执行其他操作?

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

编辑

显然,使用 Handler 会发生这种情况,因为电话一开始就进入睡眠状态。但是使用wake_lock 并不能防止这种情况发生,是否有任何其他替代方法可以在手机睡眠时运行线程?

【问题讨论】:

    标签: android audio timer handler timertask


    【解决方案1】:

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

    需要注意的是,AlarmReceiver 必须是一个公共类,否则接收方法将永远不会被调用。

    但是,我仍然无法理解为什么 Timer 有时工作有时不工作。

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-23
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2017-09-14
      • 2012-02-19
      相关资源
      最近更新 更多