我无法识别 Android TimerTask(我相信)上让我发疯的问题,
场景是:我在拨打电话后使用 PhoneStateListener 启动计时器,并在特定通话时间后重现声音。
一切都很完美,但只要我不在调试模式下(或只是将手机插入计算机),声音并不总是听起来,大多数时候它并不听起来。
我最大的问题是我无法清楚地识别问题,因为这只发生在拔下手机并且我无法读取日志时。我只能重现该问题一次(通话后没有声音)并阅读有关它的日志,在那里我意识到:onCallStateChanged 被调用,Timer 正常,但 TimerTask 从未被调用(或计划)。
因此,在这里阅读了一些问题之后,我使用了 Handler 而不是 Timer。但我有完全相同的问题。事实上,使用 Handler 时,通过简单地插入和拔出手机就更容易重现此问题(使用 Timer,重现无声音问题更困难)。
我是在做错事还是需要执行其他操作?
任何评论将不胜感激,在此先感谢
编辑
显然,使用 Handler 会发生这种情况,因为电话一开始就进入睡眠状态。但是,使用wake_lock 并不能防止这种情况发生,当手机处于睡眠状态时,是否还有其他替代方法可以运行线程?