有没有办法将参数传递给 Runnable?

2022-09-01 04:50:37

我有一个线程,它使用处理程序来发布可运行的实例。它工作得很好,但我很好奇如何将参数传入以用于Runnable实例?也许我只是不明白这个功能是如何工作的。

为了抢占“你为什么需要这个”的问题,我有一个线程动画,它必须回调UI线程以告诉它实际绘制什么。


答案 1

简单地说,一个使用接受参数的构造函数实现的类就可以,Runnable

public class MyRunnable implements Runnable {
  private Data data;
  public MyRunnable(Data _data) {
    this.data = _data;
  }

  @override
  public void run() {
    ...
  }
}

您只需使用参数化构造函数创建 Runnable 类的实例即可。

MyRunnable obj = new MyRunnable(data);
handler.post(obj);

答案 2

有多种方法可以做到这一点,但最简单的方法如下:

final int param1 = value1;
final int param2 = value2;
... new Runnable() {
    public void run() {
        // use param1 and param2 here
    }
}

推荐