我是线程新手,并不是 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();
}
最佳答案
- 您调用了 getValue 吗?
- 如果是的话,为什么说它没有运行?看起来应该如此。
- 在 Android 中,这实际上应该由 AsyncTask 完成。 AsyncTask 是一个类,它会自动为您启动一个线程,然后在任务完成时在 UI 线程上运行第二段代码。这摆脱了尴尬的处理程序构造。
关于Java 线程未启动,出了什么问题以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17338192/