在自定义线程中执行可运行参数 class
Executing a runnable argument in a custom thread class
我想在我的主线程中定义我的 runnable
,然后将其作为参数传递给另一个线程,如下所示 -
final Runnable runnable = new Runnable() {
@Override
public void run() {
Log.i("Running runnable","");
}
};
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
text.setText(msg.obj.toString());
}
};
ThreadTest handlerThreadTest = new ThreadTest(runnable, handler);
handlerThreadTest.start();
ThreadTest
class 定义如下 -
public class ThreadTest extends Thread {
private Handler handler;
private Runnable runnable;
public ThreadTest(Runnable runnable, Handler handler) {
this.handler = handler;
this.runnable = runnable;
}
@Override
public void run() {
super.run();
runnable.run();
Message msg = handler.obtainMessage();
msg.obj = "YUSSSSSS!";
handler.sendMessage(msg);
} }
我可以将 "YUSSSSSS" 消息发送给我的处理程序,但 runnable.run()
似乎不起作用,因为我在 logcat.
中看不到任何内容
我哪里弄错了?
Logcat 倾向于删除空消息,在您的日志中添加一些字符,您可能会在 "Running runnable"
的 TAG 下看到一些内容
Log.i("RunnableImpl", "Running runnable");
我想在我的主线程中定义我的 runnable
,然后将其作为参数传递给另一个线程,如下所示 -
final Runnable runnable = new Runnable() {
@Override
public void run() {
Log.i("Running runnable","");
}
};
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
text.setText(msg.obj.toString());
}
};
ThreadTest handlerThreadTest = new ThreadTest(runnable, handler);
handlerThreadTest.start();
ThreadTest
class 定义如下 -
public class ThreadTest extends Thread {
private Handler handler;
private Runnable runnable;
public ThreadTest(Runnable runnable, Handler handler) {
this.handler = handler;
this.runnable = runnable;
}
@Override
public void run() {
super.run();
runnable.run();
Message msg = handler.obtainMessage();
msg.obj = "YUSSSSSS!";
handler.sendMessage(msg);
} }
我可以将 "YUSSSSSS" 消息发送给我的处理程序,但 runnable.run()
似乎不起作用,因为我在 logcat.
我哪里弄错了?
Logcat 倾向于删除空消息,在您的日志中添加一些字符,您可能会在 "Running runnable"
的 TAG 下看到一些内容Log.i("RunnableImpl", "Running runnable");