【发布时间】:2011-08-12 21:59:25
【问题描述】:
鉴于以下 LogCat 跟踪,这表明 Handler.removeCallbacks() 在 myTask.run() 之前被调用(通过 MyListener.cancelTimeout())明显:
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) 正好在 0.01 秒 延迟后被 removeCallbacks()-ed ()。然后,2.01 秒后,它是 run()...
这有什么可以解释的?
例如,0.01 秒对于 Android 来说是不是太短而无法计算顺序?
非常感谢任何调试此问题的想法。
【问题讨论】:
标签: java android handler postdelayed