Java 线程未启动,出了什么问题以及如何修复它?

标签 java android multithreading http

我是线程新手,并不是 Java 中最先进的,但据我了解,以下内容应该可以正确运行,但事实并非如此。我尝试过调整内容并阅读线程,但无济于事。我尝试搜索,但没有得到任何明确的答案。

代码:

public void getValue(final EditText input1) // 0 all three // 1 ask // 2 buy
{
    final Handler handler = new Handler();
    final Thread thread = new Thread() {
        public void run() {
            try {
                HttpClient httpClient = new DefaultHttpClient();
                HttpContext localContext = new BasicHttpContext();
                HttpGet httpGet = new HttpGet("http://finance.yahoo.com/d/quotes.csv?s="+input1.getText().toString()+"&f=abl1");
                HttpResponse response = null;
                try {
                    response = httpClient.execute(httpGet, localContext);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                final HttpResponse finalResponse = response;
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            textViews[2].setText("Last:Err2");
                            BufferedReader reader = new BufferedReader(
                                    new InputStreamReader(
                                            finalResponse.getEntity().getContent()
                                    ));
                            updateText( reader.readLine()); // pass data out
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
            } catch (final Exception e) {
                e.printStackTrace();
        }
    }

};
    thread.start();
}

最佳答案

  1. 您调用了 getValue 吗?
  2. 如果是的话,为什么说它没有运行?看起来应该如此。
  3. 在 Android 中,这实际上应该由 AsyncTask 完成。 AsyncTask 是一个类,它会自动为您启动一个线程,然后在任务完成时在 UI 线程上运行第二段代码。这摆脱了尴尬的处理程序构造。

关于Java 线程未启动,出了什么问题以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17338192/

相关文章:

java - 无法使用 Swagger-UI 的 jar 文件调用 API

android - 在 travis support-v4 21.0 上找不到 android.support.v4.widget.DrawerLayoutImpl 的类文件

java - 获取java中的 Activity 线程数

c++ - Win32 多线程资源

c - 了解多线程共享资源 : shmid, shmat、shmdt

java - 为什么 Java 方法 "Arrays.copyOf"在处理整数数组和处理对象数组时行为不同

JavaFX ImageView 图像未显示

java - Java 中的内存分配加倍

java - 如何在用户界面中使用 SOAP Web 服务?

Android:在捕获期间拆分视频