我有一個Activity
「A1」和ListActivity
「A2」如何在活動結束前的處理過程中在Android活動中顯示加載消息或對話框或圖像?
予取輸入從用戶在Activity
「A1」,並根據由用戶給定的輸入I處理並生成結果列表。生成的列表將顯示在我的ListActivity
「A2」中。
現在,處理輸入並生成結果列表需要太長時間。所以我想在這個時候顯示一個加載對話框或者加載圖片或者加載消息,這樣用戶就不會認爲這個應用程序被阻塞了。
現在我到目前爲止嘗試過的東西: 是的,我試過AsyncTask
! (我知道很多人都會提出這個建議)所以現在我正在做一個AsyncTask
的所有處理。我在onPreExecute
中顯示ProgressDialog
,在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);
的AsyncTask
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;
}
}
我實際上建議你點擊開始進度條;在裏面做你的計算; stasrt Activity2當它解散:) –