2012-03-26 18 views
2

Ich aktualisiere ein Bild mithilfe des Timers, aber es führt zu einem schwerwiegenden Leistungsproblem. Dann drucke ich Protokolle und finde heraus, dass mein Timer schneller als 1500 läuft. Also, was ist das Problem?Was ist los mit meinem Timer-Thread?

Zeitplan bei falsch rate:

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); 
+0

Ich sehe nicht, wo Sie warten? 'sendMessage' kehrt sofort zurück. – sastraxi

+0

haben Sie versucht, dem Hauptthread Schlaf hinzuzufügen? – Andreas

+0

Versuchen Sie, Thread.sleep (Millisekunden) zu verwenden; –

Antwort

1

Ich denke, das Problem ist, dass Sie eine While-Schleife eingeben, die wiederholt ausgeführt wird. Sie möchten wahrscheinlich nur eine Überprüfung durchführen, wenn Sie sich in einem ungültigen Zustand befinden, und dann sollten Sie die Aufgabe nicht ausführen. So würde ich ändern:

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

zu:

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

Vielen Dank für die schnelle Antwort! Ich sollte verwenden, wenn (...) anstatt während (...)! – thecr0w