2011-05-13 74 views
0

與ProgressDialog工作我使用asynctask和 從下載網站的數據我對異步任務的代碼如下的AsyncTask不是在Android的

public class getSyncTaskInBackground extends AsyncTask<Void, Void, Void>{ 
    @Override 
    protected Void doInBackground(Void... params) { 
     getSynchronizeTask(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 

     if(progressDialog != null && progressDialog.isShowing()) { 
      progressDialog.dismiss(); 
     } 
     displaySynchronizetask(); 
     super.onPostExecute(result); 
    } 

    @Override 
    protected void onPreExecute() { 
     progressDialog = ProgressDialog.show(synchronize.this, "Tasks are synchroning...", "Please wait..."); 
     super.onPreExecute(); 
    } 

    @Override 
    protected void onCancelled() { 
     super.onCancelled(); 
     if(progressDialog != null && progressDialog.isShowing()) { 
      progressDialog.dismiss(); 
     } 
    } 

} 

這個線程需要更多的時間來完成任務 所以如果我想取消此線程進程之間然後我就寫後退按鈕的這段代碼按下 或者如果進度已經解僱的話,我想通過調用finish(); 我的後退按鈕的代碼以關閉活動如下

@Override 
public void onBackPressed() { 
    syncThread.cancel(true); //syncThread is the object of getSyncTaskInBackground 
if(progressDialog != null && progressDialog.isShowing()) { 
    progressDialog.dismiss(); 
} else { 
    finish(); 
} 
} 

現在當我按下按鈕然後progressdialog不是解僱 是mycode中的任何錯誤?有什麼方法可以完成我的需求? 請幫我

回答

4


您可能需要調用 setCancelable與真正的對你progressDialog實例: http://developer.android.com/reference/android/app/Dialog.html#setCancelable(boolean

如果你想對你的progressDialog
你可以設置一個onCancelListener的取消事件 http://developer.android.com/reference/android/app/Dialog.html#setOnCancelListener(android.content.DialogInterface.OnCancelListener

希望這有助於

+0

嘿感謝這個我工作 – Dharmendra 2011-05-13 10:40:09