我需要每秒從Runnable/Handler更新我的UI的一些幫助。我使用此代碼:Android每秒更新處理程序的ui
Runnable runnable = new Runnable() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
prBar.setProgress(myProgress);
y = (double) ((double) myProgress/ (double) RPCCommunicator.totalPackets)*100;
txtInfoSync1.setText(Integer.toString((int)y) + "%");
prBar.setMax(RPCCommunicator.totalPackets);
int tmp = totalBytesReceived - timerSaved;
Log.w("","totalBytesReceived : "+totalBytesReceived + " timerSaved : "+timerSaved);
Log.w("","tmp : "+tmp);
if (avgSpeedCalc.size() > 10)
{
avgSpeedCalc.remove(0);
}
avgSpeedCalc.add(tmp);
int x = 0;
for (int y=0;y<avgSpeedCalc.size();y++)
{
x += avgSpeedCalc.get(y);
Log.d("","x : "+x);
}
x = Math.round(x/avgSpeedCalc.size());
Log.e("","x : "+x);
timerSaved = totalBytesReceived;
txtSpeed.setText(Integer.toString(x));
}
});
}
};
我handler.postDelayed(runnable, 1000);
在onCreate()
嘗試過,但從來沒有開始運行的。或者即使我嘗試使用runnable.run();
,它仍然無法使用。
任何想法如何啓動runnable /處理程序並每秒更新ui?
以及我如何在這之後停止:
試試這個?我的意思是,只有當我通過互聯網獲取數據時,我才需要運行它,並且我想在活動完成或用戶單擊取消按鈕後停止可運行。 – 2012-02-06 12:24:47
更新了我的答案並引入了一個標誌 – WarrenFaith 2012-02-06 12:33:59
實際上'handler.removeCallbacks(runnable);'也在做同樣的事情。 – 2012-02-06 12:48:59