因此,如果拖動幾乎在draggingzone之外,我有線程檢查每10ms的線程。基本上我的線程代碼沒有做到99%的時間,所以我應該讓它暫停並在需要時才恢復?或者,當左右兩邊都是錯誤的時候,這個字面上什麼都不會做?我是否應該暫停我的線程Android
我的代碼看起來像這樣
timer = new Thread() { //new thread
public void run() {
b = true;
try {
do {
sleep(10);
runOnUiThread(new Runnable() {
@Override
public void run() {
if (right) {
dragzone.moveleft(-5);
} else if (left) {
dragzone.moveleft(5);
}
}
});
}
while (b);
} catch (InterruptedException e) {
}
}
;
};
timer.start();
這是工作幾乎一樣好它應該是。但是在很多拖動事件之後,會有很多處理程序同時運行。因爲它每次都會開始新的。正因爲如此,它每10ms執行多次dragzone.moveleft。我怎麼能先暫停處理程序,然後在另一個dragevent開始時恢復呢? – niksi
所以在onCreate我首先做這個'handler = new Handler(); ' 並在ACTION_DRAG_STARTED我這樣做 'b = true; handler.postDelayed(checkDragZone,10);' 然後在ACTION_DROP 'handler.removeCallbacks(checkDragZone); b = false;' 它似乎工作,但這是正確的方式來使用處理程序? – niksi