有没有办法将参数传递给 Runnable?
2022-09-01 04:50:37
我有一个线程,它使用处理程序来发布可运行的实例。它工作得很好,但我很好奇如何将参数传入以用于Runnable实例?也许我只是不明白这个功能是如何工作的。
为了抢占“你为什么需要这个”的问题,我有一个线程动画,它必须回调UI线程以告诉它实际绘制什么。
我有一个线程,它使用处理程序来发布可运行的实例。它工作得很好,但我很好奇如何将参数传入以用于Runnable实例?也许我只是不明白这个功能是如何工作的。
为了抢占“你为什么需要这个”的问题,我有一个线程动画,它必须回调UI线程以告诉它实际绘制什么。
简单地说,一个使用接受参数的构造函数实现的类就可以,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);
有多种方法可以做到这一点,但最简单的方法如下:
final int param1 = value1;
final int param2 = value2;
... new Runnable() {
public void run() {
// use param1 and param2 here
}
}