簡體   English   中英

Android:延遲功能執行並可能取消執行

[英]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.

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