从活动2的Asynctask更新活动1

时间:2013-11-13 19:02:20

标签: android

我有2个活动,第一个有一个ListView,我想从第二个活动async任务更新 怎么能做到这一点?我在谷歌搜索了几天但没找到任何东西。

public class Activity1 extends Activity {
    ...
    //launch activity2
    }

在第二个Activity中完成了一些过程,然后我想更新Activity1:

public class Activity2 extends Activity {
    ...
    new UpdateDB ().execute();
    // Return to Activity 1 but UpdateDB is still working ..
    // ..after finished the work i want to update activity1
    setResult(RESULT_OK, null);
    finish();

    private class UpdateDB extends AsyncTask<Void, Void, Void> {
        ...
        protected void onPostExecute(Void unused) {
            // HERE TRYING TO UPDATE activity1
        }
    }
}

3 个答案:

答案 0 :(得分:3)

将您的代码放入onPostExecute()

    protected void onPostExecute(Void unused) {
    //HERE TRYING TO UPDATE activity1
     setResult(RESULT_OK, null);
     finish();
    }
  }

如果您需要发回一些数据,请使用Intent代替null。像

这样的东西
 protected void onPostExecute(Void unused) {
    //HERE TRYING TO UPDATE activity1
     Intent i = new Intent();
     // add extras to send back
     setResult(RESULT_OK, i);   // pass back your Intent
     finish();
    }
  }

然后在Activity1中,您onActivityResult()会收到您在Intent中传回的setResult()。我假设您使用Activity2开始startActivityForResult()

答案 1 :(得分:0)

您可以将更改存储在SharedPreference中。因此,您可以在第一个活动的onResume上访问它。

如果在onResume回调后更改了值,请使用OnSharedPreferenceChangeListener接口通知更改。

答案 2 :(得分:0)

您可以在第二个活动中使用AsyncTask。在doInBackground中完成您的工作,然后在onpostexecute

中调用/更新第一个活动