您好,我正在嘗試在用戶按住按鈕時執行一些操作。長時間執行操作
我的問題是,我的Runnable
不會「運行」。
這是我的代碼:
@Override
public boolean onLongClick(View v) {
final Runnable r = new Runnable()
{
public void run()
{//do the forwarding logic here
int test = 0;
if(holdingDown)
test++;
else
return;
Log.i("test", test+"");
}
};
r.run();
}
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_UP:
{
holdingDown= false;
Log.i("holdingDown", "false");
break;
}
}
return false;
}
的onTouch
是用於檢測當用戶停止按壓按鈕。當我看到我的日誌時,我看到Runnable
只運行一次。
我的測試日誌只得到值1
日誌呼籲Log.i("holdingDown", "false")
是越來越在正確的時間觸發,只有當我停止觸摸按鈕。
爲什麼我的Runnable
不能運行?謝謝。
編輯:
我試過這段代碼:
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
holdingDown = true;
new Thread(new Runnable() {
@Override
public void run() {
if(holdingDown)
{
int test = 0;
test++;
Log.i("test", test+"");
}
else
return;
}
}).start();
return false;
}
它,直到不能正常工作。
你在哪裏更改爲'holdDown'的值?此外,這不是開始和運行線程的方式 – gunar