簡體   English   中英

我需要有人為我解釋這個java代碼

[英]I need someone to explain for me this java code

我正在為我的大學解決一個練習,我的 pdf 中有這段代碼,我應該用它來延遲按鈕上文本顏色的更改,我不明白它究竟是如何工作的,所以請有人解釋一下它

HandlerThread handlerThread = new HandlerThread("showText");
    handlerThread.start();
    Handler handler = new Handler(handlerThread.getLooper());

    Runnable runnable = new Runnable() {
        int i = 0;
        @Override
        public void run() {
            i++;
            handler.postDelayed(this, 1000);
            if (i > 1) 
                button.setTextColor(getResources().getColor(android.R.color.transparent));
        }
    };
    handler.post(runnable);

這段代碼以一種晦澀的方式導致 Runnable 以 1 秒(每秒)的延遲被調用,因為它每次都重新調度自己。 int i正在保護button.setTextColor不執行第一個。

但是這段代碼很亂,應該這樣做的方法如下:

        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                button.setTextColor(getResources().getColor(android.R.color.transparent));
            }
        };
        handler.postDelayed(runnable, 1000);

或使用 lambda 表達式,如下所示:

        handler.postDelayed(() -> button.setTextColor(getResources().getColor(android.R.color.transparent)), 1000);

暫無
暫無

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

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