我有兩個活動。當通過意圖切換到第二個活動時,它需要3-4秒,因爲它有很多組件,適配器從SQLite等獲取數據。因此,我想在切換時顯示進度對話框。進度對話框凍結時切換到另一個活動
我一直在挖掘主題用於此目的,並嘗試了許多人:
1)在第二活動使用的AsyncTask。只要點擊組件切換到第二個活動,它就不會顯示進度對話框。它等待3-4秒,然後進度對話框出現少於一秒,這不是用戶友好的方式。
2-)在第一個活動中使用AsyncTask。只要點擊該組件,它就會顯示,但進度輪不旋轉。進度對話框凍結。
3-)在第二個活動上使用AsyncTask onStart()方法。這是第一種方式。
下面的代碼實現上面的第二種方式,在第一個活動上使用AsyncTask。
public void toVisitRegister(Event event) { //Switching to the second activity
new startingThread().execute();
Intent toVisitRegister = new Intent(MainCalendar.this, VisitRegister.class);
startActivity(toVisitRegister);
finish();
}
這裏是的AsyncTask
public class startingThread extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
startingProgress = new ProgressDialog(MainCalendar.this);
startingProgress.setTitle("Visit Register");
startingProgress.setMessage("Initializing...");
startingProgress.show();
}
@Override
protected String doInBackground(String... params) {
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(MainCalendar.this.startingProgress != null) {
MainCalendar.this.startingProgress.dismiss();
}
}
}
我也試圖打電話給startActivity在onPostExecute,但沒有奏效。因此,我在等待你對這個問題的意見和建議。任何幫助將不勝感激。
謝謝。
只要點擊要切換的組件,進度對話框就會顯示不到一秒鐘。然後,我把dismiss()放在finish()之下,但這次進度輪不旋轉。另外finish()方法對於mContext是未定義的。 –
將mContext轉換爲Activity。像'((Activity)mContext)。完成();' – user370305
同時檢查你的'VisitRegister' Activity是否有任何繁重的工作在'onCreate()'或'onStart()'上完成? – user370305