我有一项 Activity ,我必须每秒更新一次 View (如图像)。我尝试了几种不同的方法,发现它们可以实现相同的功能。但哪种方法最有效并减少内存泄漏?
以下是不同的方法-
方法一
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
//DO SOMETHING
handler.postDelayed(this, 1000);
}
}, 1000);
方法二
ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(5);
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
//DO SOMETHING
}
}, 0, 1, TimeUnit.SECONDS);
方法三
Timer myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
//DO SOMETHING
}
}, 0, 1000);
我应该使用哪一个?我问这个问题是因为我会在很短的时间内更新我的 GUI。
最佳答案
如果您想更新屏幕上的值或图像,您应该使用第一种方法。我使用第一种方法解决了同样的问题。
方法一
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
//DO SOMETHING
handler.postDelayed(this, 1000);
}
}, 1000);
备选
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(1000);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//update here (images or other values)
}
});
}
} catch (InterruptedException e) {
}
}
};
关于java - 短时间间隔重复方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546423/