[英]Multi-threading on UI Thread
我需要實時更新6個圖形。 因此,我為每個圖形創建了一個單獨的隊列,並嘗試使用timer.schedule更新它,但實際上並沒有用。 特別是,如果我評論每個單獨的timer.schedule的調用,而只留下第一個,則它會很好地工作。 但是,即使我添加了第二個timer.schedule(僅限1和2個計時器),它也會凍結。 這是我使用的代碼:
timer_graph1 = new Timer();
timer_graph1.schedule(new Graph1(), 20, 20);
timer_graph2 = new Timer();
timer_graph2.schedule(new Graph2(), 20, 20);
timer_graph3 = new Timer();
timer_graph3.schedule(new Graph3(), 20, 20);
timer_graph4 = new Timer();
timer_graph4.schedule(new Graph4(), 20, 20);
timer_graph5 = new Timer();
timer_graph5.schedule(new Graph5(), 20, 20);
timer_graph6 = new Timer();
timer_graph6.schedule(new Graph6(), 20, 20);
class Graph1 extends TimerTask {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//add data to the graph and update
mChart1.invalidate();
}
});
}
}
//same structure as for Graph1
class Graph2 extends TimerTask {
}
您能否提出這種方法有什么問題?
從您的代碼中,我可以知道您的刷新沒有更新到GUI或您的GUI快速閃爍。
更新GUI的經驗法則是:
SwingUtilities.invokeLater()
調用所有GUI更新,以便在EDT線程中完成更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.