我已經讀入AsyncTask,我獲得了大部分,但我仍然有一個小問題。簡單的AsyncTask - 返回值null
我基本上想要使用線程從聯機源檢索數據,並將其返回給活動。以下是一個簡單的僞代碼。
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?
在此先感謝
試試這個:new dataExchange()。execute(「」); – 2013-02-14 12:56:48
好像你在理解代碼流時遇到了問題,當你在使用異步操作時... AsyncTask(就像這個類的名字所述)被執行異步...所以不要指望'dbData'的值會是在你調用'new dataExchange()。execute(1);'(因爲執行不會等到任務完成後它只是觸發它),所以把'Log.i(「Data」,dbData) ;設置dbData之後''設置'setDBData' ... – Selvin 2013-02-14 12:58:23