San*_*osh 1 java multithreading android thread-safety
这是我的问题......
public static String response = "";
Run Code Online (Sandbox Code Playgroud)
"
public static String sendDataToServer(String data)
{
new Thread()
{
public void run()
{
//sending data to server
response = httpClient.execute(httppost, new BasicResponseHandler()).trim();
}
} .start();
return response;
}
Run Code Online (Sandbox Code Playgroud)
当我调用这个方法时,我得到空字符串作为响应.
String res = sendDataToServer("my_data"); //res is always empty string
//...XXXXXXX code after calling the method
Run Code Online (Sandbox Code Playgroud)
并且在完成sendDataToServer()方法的执行之前总是执行XXXXX代码.为什么res总是空的?我如何获得正确的响应字符串?如何在执行sendDataServer()方法之前停止执行XXXX代码?谢谢.
你可以做:
Thread t = new Thread() {
public void run() {
//sending data to server
response =
httpClient.execute(httppost, new BasicResponseHandler()).trim();
}
};
t.start();
t.join();
Run Code Online (Sandbox Code Playgroud)
这样你就会等到线程结束然后再继续.
但是,请记住,在Android中等待线程完成是危险的,尤其是在UI线程(即主线程)中.但是,我假设这个线程不在UI线程中,因为否则AsyncTask会有更好的解决方案(更本地化).
| 归档时间: |
|
| 查看次数: |
2819 次 |
| 最近记录: |