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());