1

给定以下 LogCat 跟踪,它表明在之前清楚地Handler.removeCallbacks()调用了 (via MyListener.cancelTimeout()) :myTask.run()

08-12 17:29:13.990: VERBOSE/MyListener.setTimeout(2625): TID: 2625, Handler{460a86e8}, myTask@461cc378
08-12 17:29:14.000: VERBOSE/MyListener.cancelTimeout(2625): TID: 2625, Handler{460a86e8}, myTask@461cc378
08-12 17:29:16.010: VERBOSE/myTask.run(2625): TID: 2625, MyTimeoutTask(handleTimeout())
08-12 17:29:16.010: VERBOSE/MyListener.cancelTimeout(2625): TID: 2625, Handler{460a86e8}, myTask@461cc378
08-12 17:29:16.010: VERBOSE/MyListener.handleTimeout(2625): TID: 2625

什么可以解释这个谜团?

请注意日志中的确切时间戳:相同的 Runnable 对象 (myTask@461cc378) 在 postDelayed()0.01 秒被 removeCallbacks()-ed 。然后,2.01 秒后,它是 run()...

有什么可以解释的?

例如,对于 Android 来说,0.01 秒是否太短而无法计算顺序?

任何调试这个的想法都将非常感激。

4

1 回答 1

5

这确实有效。您没有提供任何代码来帮助找出您做错了什么,但是您做错了:从错误的处理程序中删除,传递错误的可运行文件等。

于 2011-08-12T22:24:53.847 回答