0

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

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。我不擅长线程,这似乎我的主线程没有看到我的作家被创建。

有什么帮助吗?

4

2 回答 2

1

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

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

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

于 2013-01-24T11:57:25.290 回答
0

初始化 writer 对象后启动线程。如果您需要两个线程同时运行,那么简单的方法是运行一个 while 循环检查是否writer != nullThread.sleep每次迭代中都使用

于 2013-01-24T12:01:11.653 回答