如何将对象传递给在按钮侦听器中匿名生成的新线程

时间:2012-07-11 03:00:09

标签: java android

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

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

感谢,

安东

1 个答案:

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

    }

但是你确保将实例分配给最终变量。