我的Timer线程出了什么问题?

时间:2012-03-26 06:29:20

标签: android timer

我正在使用计时器更新图片,但它会导致致命的性能问题。然后我打印日志,发现我的计时器运行速度快而不是1500。 那有什么问题?

以错误的速度安排:

  

startToDraw()。353:System.currentTimeMillis()= 1332742387400
  startToDraw()。353:System.currentTimeMillis()= 1332742387410
  startToDraw()。353:System.currentTimeMillis()= 1332742387438
  startToDraw()。353:System.currentTimeMillis()= 1332742387449
  startToDraw()。353:System.currentTimeMillis()= 1332742387472

timer = new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        while (!isDestroyed) {
            try {
                Log.i(getClass().getName(), "startToDraw().353: System.currentTimeMillis() = " + System.currentTimeMillis());
                handler.sendMessage(new Message());
            } catch (Exception e) {
            }
        }
    }
}, 0, 1500);

1 个答案:

答案 0 :(得分:1)

我认为问题是你正在进入一个反复运行的while循环。您可能只是想检查一下您是否处于无效状态,然后如果您是,则不要执行该任务。所以我会改变:

while (!isDestroyed) {
    try {
        Log.i(getClass().getName(), "startToDraw().353: System.currentTimeMillis() = " + System.currentTimeMillis());
        handler.sendMessage(new Message());
    } catch (Exception e) {
}

为:

if (!isDestroyed) {
    try {
        Log.i(getClass().getName(), "startToDraw().353: System.currentTimeMillis() = " + System.currentTimeMillis());
        handler.sendMessage(new Message());
    } catch (Exception e) {
}