我正在使用计时器更新图片,但是这会导致致命的性能问题。然后我打印日志,发现我的计时器运行得比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);
最佳答案
我认为问题在于您正在进入一个重复运行的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) {
}