Android 当工作需要线性完成时使用ASyncTask
我有工作需要按以下顺序完成: 在主要活动中: -显示进度对话框 -从web获取和解析XML -取消对话框 -切换到在第一个活动中使用已解析XML中的数组的ListView活动 我的问题是,因为我在ASyncTask(主要活动)中进行获取/解析工作 立即尝试加载新活动,甚至需要先完成获取/解析工作,因为它获取listView(新活动)的数据。如何确保在ASyncTask工作完成之前不会加载新活动 以下是我正在使用的示例:Android 当工作需要线性完成时使用ASyncTask,android,android-asynctask,Android,Android Asynctask,我有工作需要按以下顺序完成: 在主要活动中: -显示进度对话框 -从web获取和解析XML -取消对话框 -切换到在第一个活动中使用已解析XML中的数组的ListView活动 我的问题是,因为我在ASyncTask(主要活动)中进行获取/解析工作 立即尝试加载新活动,甚至需要先完成获取/解析工作,因为它获取listView(新活动)的数据。如何确保在ASyncTask工作完成之前不会加载新活动 以下是我正在使用的示例: public void onCreate(Bundle savedIn
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button submit = (Button) findViewById(R.id.submitButton);
submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
EditText text = (EditText) findViewById(R.id.entry);
input = text.getText().toString();
input = input.replace(" ", "%20"); //replace spaces with %20 for URL specification
WeatherRetrievalTask wt = new WeatherRetrievalTask();
wt.execute();
Bundle bun = new Bundle();
bun.putParcelableArray("in", (Parcelable[])weather);
Intent myIntent = new Intent(view.getContext(), WeeklyDisplayActivity.class);
myIntent.putExtras(bun);
startActivityForResult(myIntent, 0);
}
});
}
*忽略这个捆绑工作,因为这是我需要问的另一个问题的主题
因此,startActivityForResult需要等待ASyncTask完成并且对话框在运行之前被取消,因为它首先需要天气数据来填充列表视图。您应该在ASyncTask的onPostExecute()中执行“切换到列表视图活动”。
不要编写调用其execute()后将使用ASyncTask结果的代码,因为它将在完成ASyncTask之前执行,而ASyncTask将作为另一个线程使用。
因此,需要在其onPostExecute()方法中使用asynctask doinbackground()的结果的工作