[英]Android: delay function execution and possibility to cancel its execution
我的應用程序中現在有一個動畫加載器。
public void startLoader() {
Runnable task = new Runnable() {
@Override
public void run() {
lock = true;
loader.setVisibility(View.VISIBLE);
}
};
runOnUiThread(task);
}
public void stopLoader() {
Runnable task = new Runnable() {
@Override
public void run() {
lock = false;
loader.setVisibility(View.GONE);
}
};
runOnUiThread(task);
}
現在我希望它像這樣工作:
stopLoader應該具有大約1000ms的延遲執行,因此在調用stopLoader后1秒鍾消失。 但是如果在1000毫秒內調用了startLoader,則stopLoader計時器將被取消。
實現此目的的最佳方法是什么?
您應該使用Handler而不是runOnUiThread。
使用處理程序,您可以使用handler.removeCallbacks(runnable)取消任何延遲的任務。
Handler mHandler = new Handler();
Runnable startTask = new Runnable() {
@Override
public void run() {
lock = true;
loader.setVisibility(View.VISIBLE);
}
};
Runnable stopTask = new Runnable() {
@Override
public void run() {
lock = false;
loader.setVisibility(View.GONE);
}
};
public void startLoader() {
mHandler.removeCallbacks(stopTask);
mHandler.post(startTask);
}
public void stopLoader() {
mHandler.postDelayed(stopTask, 1000);
}
在這里閱讀更多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.