替代使用全局变量来存储AsyncTask结果

时间:2013-08-03 06:57:12

标签: android android-asynctask

我有一个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

1 个答案:

答案 0 :(得分:0)

尝试这种方式,通过Object代替IntegerString

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;
  }