gpt4 book ai didi

java - 简单 AsyncTask - 返回值 null

转载 作者:行者123 更新时间:2023-12-02 07:16:35 24 4
gpt4 key购买 nike

我已经阅读了 AsyncTask,我了解了大部分内容,但我仍然有一个小问题。

我基本上想使用线程从在线源检索数据,并将其返回到 Activity 。下面是一个简单的伪代码。

public class register extends Activity implements OnClickListener{

public static String dbData;

public static void setDBData(String data)
{
dbData = data;
}

//CALLED FROM ONCREATE()
public void regPageTwo()
{
setContentView(R.layout.layout_register_two);
new dataExchange().execute(1);
Log.i("Data", dbData);

}

}

public class dataExchange extends AsyncTask<Integer, Void, String>{

@Override
protected String doInBackground(Integer... params) {
//EVENTUALLY DO OTHER COMPUTATION
String test="aTest";
return test;
}

@Override
protected void onPostExecute(String result)
{
register.setDBData(result);
}
}

(抱歉,格式很差,还不太习惯使用它)。知道为什么 dbData 总是 NULL 吗?

提前致谢

最佳答案

 public void regPageTwo()
{
setContentView(R.layout.layout_register_two);
new dataExchange().execute(1);
Log.i("Data", dbData);
}

查看上面的代码后,

Log.i("Data", dbData); 应该位于 AsyncTask 的 onPostExecute() 中。

实际上,您的代码行 Log.i("Data", dbData); 在 AsyncTask 完成之前立即执行。所以它总是一个 NULL 你必须等待完整的 AsyncTask。或者正如我建议的那样,将此行放入 onPostExecute() 中。

关于java - 简单 AsyncTask - 返回值 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com