0

我想将一个对象(用于打印的文档)传递给一个将打印文档的新线程。我的代码是:

  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())与下面的代码相关联

谢谢,

安东

4

1 回答 1

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();

    }

但是您必须确保将实例分配给最终变量。

于 2012-07-11T03:13:06.710 回答