簡體   English   中英

您如何使Handler停止接受輸入,直到在Android中出現提示?

[英]How do you make a Handler stop taking input until prompted in Android?

我有如下定義的處理程序。 我想要的是能夠觸發此Handler停止工作,並可能在按下按鈕時重新觸發它。 我當前正在使用變量isScrubbing來停止操作的發生。 我最想做的是做一個mUpdateTimeTask.sleep()

private Runnable mUpdateTimeTask = new Runnable() {
    public void run() {
        if(isScrubbing == 0) {
            .
            .
            .
        }
        // Running this thread after 100 milliseconds
        mHandler.postDelayed(this, 100);
    }
};

沒有像睡眠這樣的方法。 請記住,處理程序將Runnables發布到一個隊列,UI線程從該隊列開始執行任務。 您可能想要的實現可能是:

public class MyTask implements Runnable {

    private boolean exit;

    public void run() {
       if (exit) {
          return;
       }
       // do what you have to do
       mHandler.postDelayed(this, 100);
    }

    public void start() {
       exit = false;
       mHandler.postDelayed(this, 100);
    }    

   public void stop() {
      exit = true;
      mHandler.removeCallbacks(this);
   }
}

只需實例化一次,然后調用方法start()首次發布(run方法重新發布自身),然后調用stop()退出。 布爾值不是必需的, mHandler.removeCallbacks(this)已經足夠。 另一種實現

public class MyTask implements Runnable {

    private boolean exit;

    public void run() {
       if (exit) {
          // do your clean up work
          mHandler.removeCallbacks(this);
          return;
       }
       // do what you have to do
       mHandler.postDelayed(this, 100);
    }

    public void start() {
       exit = false;
       mHandler.postDelayed(this, 100);
    }    

   public void stop() {
      exit = true;
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM