【发布时间】:2026-01-08 14:15:01
【问题描述】:
这是我的问题...
public static String response = "";
'
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;
}
当我调用此方法时,我得到空字符串作为响应。
String res = sendDataToServer("my_data"); //res is always empty string
//...XXXXXXX code after calling the method
在完成 sendDataToServer() 方法的执行之前,总是会执行 XXXXX 代码。为什么 res 总是空的?我如何获得正确的响应字符串?如何在执行 sendDataServer() 方法之前停止正在执行的 XXXX 代码? 谢谢。
【问题讨论】:
-
如果你真的想等待,不要启动线程,直接调用
response = httpClient.execute(httppost, new BasicResponseHandler()).trim();即可。 -
但您可能不想等待,因为它会因为违反 StrictMode 而出错或导致 ANR。在
run末尾调用一些方法来通知您的代码有关结果 - Handler 对此有好处。
标签: java android multithreading thread-safety