繁体   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