![](/img/trans.png)
[英]Android: How do you stop custom buttons from taking all available cell space in a TableLayout?
[英]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.