我有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
}
}
}
答案 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