-1
我需要大約5秒的延遲。我已用定時器使用以下代碼的嘗試:帶有延遲的TimerTask/Handler多次調用
Timer myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
Log.d(TAG,"Timer");
}
}, 4000, 5000);
當我檢查日誌,則定時器被越來越印刷三次。如果我改變時間,有時也會在日誌中打印4次。
我一直在使用處理器嘗試以及象下面這樣:
final Handler mHandler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(10000);
mHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.d(Utility.TAG,"Sleep::");
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
}
}).start();
但同樣的日誌印刷多次。我只是想不多次調用我的方法。我怎樣才能實現它?
編輯
沒有線程使用處理器以及象下面這樣:
final Handler h = new Handler();
final int delay = 3000; //milliseconds
h.postDelayed(new Runnable(){
public void run(){
//do something
h.postDelayed(this, delay);
Log.d(Utility.TAG,"Sleep ::");
}
}, delay);
但同樣,日誌是越來越印刷三次
只使用一個'Handler'沒有任何線程 – pskink
哪裏是'最後的處理程序H =新的處理程序();'在你的代碼?添加'Log.d(Utility.TAG,「Start ::」);'看它什麼時候叫 – pskink
@pskink我編輯過這個問題。你可以看到,我已經定義了最後的Handler h。它正在圖像的點擊監聽器中被調用。 – BLEdevices