java - 了解 Android 中的 Runnable

标签 java android multithreading interface

我正在查看Handlers,其中的post方法接受Runnable类型的参数。我遇到了以下代码 fragment

final Handler handler = new Handler();
    handler.post(new Runnable() {
        @Override
        public void run() {
            timeView.clearComposingText();
            Integer hours = seconds/3600;
            Integer minutes = (seconds % 3600)/60;
            Integer secs = seconds % 60;
            String time = String.format("%d:%02d:%02d",hours,minutes,secs);
            timeView.setText(time);

            if(running)
            {
                seconds++;
            }

            handler.postDelayed(this,1000);
        }
    });

既然RunnableJava中的一个接口(interface),我们如何能够直接创建一个新的Runnable实例呢?

最佳答案

匿名类可以实现接口(interface),这是您唯一一次看到实现不带“implements”关键字的接口(interface)的类。

完整的示例可能如下所示:

public class MyClass {

  public interface A {
    void foo();
  }

  public interface B {
    void bar();
  }

  public interface C extends A, B {
    void baz();
  }

  public void doIt(C c) {
    c.foo();
    c.bar();
    c.baz();
  }

  public static void main(String[] args) {
    MyClass mc = new MyClass();

    mc.doIt(new C() {
      @Override
      public void foo() {
        System.out.println("foo()");
      }

      @Override
      public void bar() {
        System.out.println("bar()");
      }

      @Override
      public void baz() {
        System.out.println("baz()");
      }
    });
  }

}

这个例子的输出是:

foo()
bar()
baz()

关于java - 了解 Android 中的 Runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771251/

相关文章:

C++线程数据库类内存混合

java - 查找线程池内 Activity 线程的名称: ExecutorService in java

c# - 线程安全的 WebApi 放置请求

java - OpenGL绘图纹理错误

Android 在 Recyclerview 中使用 itemTouchHelper 在cardview上拖动海拔翻译z

android - 如何在 EditText 控件中的文本更改后 0.5 秒执行某些操作?

Android:将事件监听器添加到 ListView 中的每个项目

java - 使用 DataOutputStream 将 int 写入文件

java - 数组引用解释

java - 如何通过Java或SQL获取数据库表中定义的Json顺序?