我正在使用计时器更新图片,但它会导致致命的性能问题。然后我打印日志,发现我的计时器运行速度快而不是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);
答案 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) {
}