Android 异步 class returns 空
Android async class returns null
我正在尝试修复此代码:
public class Async_Test extends AsyncTask<String, String, String> {
private String Response;
@Override
protected String doInBackground(String... params)
{
String tmp = "something";
return tmp;
}
@Override
protected void onPostExecute(String result) {
Response = result;
}
public String getResponse()
{
return this.Response;
}
}
问题如下:getResponse() 方法始终为空。
执行代码:
public void onClick(View v) {
try{
Async_Test t = new Async_Test();
t.execute("");
showMainText("res: "+t.getResponse());
} catch(Exception e)
{
showMainText(e.toString());
}
}
异步任务是异步的。更准确地说,这是调用 execute()
方法时发生的事情:
- 创建了一个新线程。
doInBackground(...)
在此新线程上执行
- 当
doInBackground(...)
终止时:onPostExecute
在主线程上执行。
因此,当您调用 showMainText("res: "+t.getResponse());
(它在主线程中)时:onPostExecute
尚未 运行,并且 Response
仍然为空。
要查看 AsyncTask 的效果:您可以在行上放置一个断点:
showMainText("res: "+t.getResponse());
你会看到显示的文本将是"something"(由于断点:AsyncTask 将有时间执行。)
要获得您期望的结果:移动 onPostExecute
中的行 showMainText("res: "+t.getResponse());
我正在尝试修复此代码:
public class Async_Test extends AsyncTask<String, String, String> {
private String Response;
@Override
protected String doInBackground(String... params)
{
String tmp = "something";
return tmp;
}
@Override
protected void onPostExecute(String result) {
Response = result;
}
public String getResponse()
{
return this.Response;
}
}
问题如下:getResponse() 方法始终为空。
执行代码:
public void onClick(View v) {
try{
Async_Test t = new Async_Test();
t.execute("");
showMainText("res: "+t.getResponse());
} catch(Exception e)
{
showMainText(e.toString());
}
}
异步任务是异步的。更准确地说,这是调用 execute()
方法时发生的事情:
- 创建了一个新线程。
doInBackground(...)
在此新线程上执行- 当
doInBackground(...)
终止时:onPostExecute
在主线程上执行。
因此,当您调用 showMainText("res: "+t.getResponse());
(它在主线程中)时:onPostExecute
尚未 运行,并且 Response
仍然为空。
要查看 AsyncTask 的效果:您可以在行上放置一个断点:
showMainText("res: "+t.getResponse());
你会看到显示的文本将是"something"(由于断点:AsyncTask 将有时间执行。)
要获得您期望的结果:移动 onPostExecute
showMainText("res: "+t.getResponse());