假设我想每隔10秒执行一次操作,而不必更新视图。
问题是:将timer与timertask一起使用会更好(我的意思是更有效):
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
<some task>
}
});
}
};
timer = new Timer();
timer.schedule(timertask, 0, 15000);
}
或只是带有延迟的处理程序
final Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
<some task>
}
};
handler.postDelayed(r, 15000);
同样,如果您能解释何时使用哪种方法以及为什么其中一种方法比另一种方法更有效(如果确实如此),我将不胜感激。
2
我读过许多有关TimerTasks异常行为的文章。我的建议是避免使用它们,并使用handler / postDelayed方法。
—
音效概念
我更喜欢Handler-postDelay方法-您拥有更多控制权,并且可以从内部安排它
—
mihail 2013年
这是计时器与处理
—
CodyF,2015年
TimerTask是一个后台任务,因此您无法更新UI。只是说...
—
Yousha Aleayoub
为我工作..谢谢
—
jyotsna