我想将一个对象(用于打印的文件夹)传递给将打印文档的新线程。我的代码是:
private final Button.OnClickListener cmdPrintOnClickListener = new Button.OnClickListener() {
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
enableTestButton(false);
Looper.prepare();
doConnectionTest();
Looper.loop();
Looper.myLooper().quit();
}
}).start();
}
};
如何将对象传递给它? 另外 - 我需要在启动新线程之前在UI线程中生成对象,以便在哪里可以将此方法(例如getDocketObject())与我下面的代码相关联
感谢,
安东
答案 0 :(得分:3)
您可以创建自己的Runnable类实现:
private class RunnableInstance implements Runnable {
protected Docket docket;
public void run() {
//do your stuff with the docket
}
public void setDocket(Docket docket) {
this.docket = docket;
}
}
然后用它来创建线程
public void onClick(View v) {
RunnableInstance target = new RunnableInstance();
target.setDocket(docketInstance);
new Thread(target).start();
}
如果你需要坚持匿名课程,你可以这样做:
public void onClick(View v) {
final Docket docket = docketInstance;
Runnable target = new Runnable(){
public void run() {
// do your stuff with the docket
System.out.println(docket);
}
};
new Thread(target).start();
}
但是你确保将实例分配给最终变量。