我有一个Activity
“A1”和一个ListActivity
“A2”
我从Activity
“A1”中的用户那里获取输入,并根据用户给出的输入进行处理并生成结果列表。然后生成的列表将显示在我的ListActivity
“A2”中。
现在,处理输入和生成结果列表需要一点时间。所以我想在这个时候显示一个加载对话框或加载图像或加载消息,这样用户就不会认为应用程序无所事事。
现在我到目前为止尝试过的事情:是的,我试过了AsyncTask
!(我知道很多人都会建议它)所以现在我正在一个AsyncTask
. 我正在显示ProgressDialog
,onPreExecute
正在处理doInBackground
并关闭对话框onPostExecute
。
但是,对话框出现在ListActivity
“A2”开始之前。在那之前,Activity
“A1”似乎被卡住了!
我希望当我单击Activity
“A1”上的“提交”按钮并继续看到该对话框直到ListActivity
“A2”出现为止。
如果您需要更多详细信息,请告诉我。谢谢。
-编辑-
onClick方法中的代码:
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Processing... Please Wait...");
progressDialog.show();
// Execute task
MyTask myTask = new MyTask(progressDialog);
AsyncTask<String, Void, ArrayList<HashMap<String, String>>> result =
myTask.execute(userChoice);
Intent intent = new Intent(this, ListActivityA2.class);
// Put results in intent
intent.putExtra("results", resultsList);
// Start result activity
startActivity(intent);
异步任务
public class MyTask extends
AsyncTask<String, Void, ArrayList<HashMap<String, String>>> {
ArrayList<HashMap<String, String>> resultsList =
new ArrayList<HashMap<String, String>>();
ProgressDialog progressDialog;
public MyTask(ProgressDialog progressDialog) {
this.progressDialog = progressDialog;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected ArrayList<HashMap<String, String>> doInBackground(
String... params) {
return doProcess(params[0]);
}
@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
progressDialog.dismiss();
super.onPostExecute(result);
}
private ArrayList<HashMap<String, String>> doProcess(String choice) {
// do processing here
return arrayList;
}
}