我有一个AsyncTask,它在onPostExecute方法中返回一个值,我知道如何获取返回值的唯一方法是使用类的全局成员变量并在onPostExecute方法中设置该值。
有更好的方法或替代方法吗?我现在正在做的事情只需要创建许多成员变量。
这是我现在正在做的事情
public class MainClass extends Activity {
String takeInString = "";
new DoItAsyncTask().execute(97);
// nested inner class of AsyncTask inside of MainClass
public class DoItAsyncTask extends AsyncTask<Integer, Void, String>{
String tempString = "";
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
// assign value of global member variable takeInString
takeInString = result;
}
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
}
@Override
protected String doInBackground(Integer... params) {
Database dptr = new Database(MainClass.this);
dptr.openToRead();
tempString = dptr.getStringFromDatabase(params[0]);
dptr.close();
return tempString;
}
} // end DoItAsyncTask
} // end MainClass
答案 0 :(得分:0)
尝试这种方式,通过Object
代替Integer
或String
:
new DoItAsyncTask().execute(97, takeInString);
private class HeavyTask extends AsyncTask<Object, Void, Void> {
private mLocalStrong = "";
@Override
protected String doInBackground(Object... params) {
mLocalInt = (Integer)params[0];
mLocalStrong = (String)params[1];
return null;
}