Java,在启动一个线程后得到一个空值

时间:2013-01-24 11:52:06

标签: java android multithreading

我正在尝试在非GUI相关类的Android应用程序中运行此代码。

Thread connection = new Thread(new Runnable() {
                public void run() {
                    try {
                        streamSource = new StreamSource(conn.getInputStream());
                        writer = new CharArrayWriter();
                        StreamResult streamResult = new StreamResult(writer);
                        TransformerFactory factory = TransformerFactory.newInstance();
                        Transformer transformer = factory.newTransformer();
                        transformer.transform(streamSource, streamResult);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
              });
        connection.start();

问题在于,当我调用 writer 时,我得到一个空值。 Writer被定义为静态全局变量以及streamSource。 我对线程并不擅长,这似乎是我的主要线程没有看到我的作家被创建。

任何帮助?

2 个答案:

答案 0 :(得分:1)

您的变量 Writer 位于另一个类(线程)中,因此您无权访问它。 它是静态的,这是理论上能够访问它的原因,但它没有被初始化为另一个线程。

请在您需要的地方创建变量 - 或者“外包”在那里发生的完整行动。

编辑http://developer.android.com/guide/components/processes-and-threads.html 以下是有关Android中的线程和进程的一些信息。

答案 1 :(得分:0)

在初始化writer对象后启动线程。如果你需要同时运行两个线程,那么简单的方法就是运行while循环检查每次迭代时writer != null是否Thread.sleep