這個問題已經很多次在這個論壇上,我已經實現了它使用進度對話框上的CancelListener,它工作正常。但是有一個問題。當我點擊返回按鈕時,它會像預期的那樣返回到前一個活動。但是當我點擊屏幕的任何其他部分(即在活動的對話框或UI上)時,它也會取消對話框並返回到上一個活動。如何阻止這種情況發生?取消異步任務,並返回到前面的活動上按下後退按鈕
class LoadAllCategories extends AsyncTask<String, String, String> {
int flag=0;
public LoadAllCategories(CategoryActivity categoryActivity) {
OnCancelListener cancelListener=new OnCancelListener(){
@Override
public void onCancel(DialogInterface arg0){
finish();
}
};
pDialog = new ProgressDialog(CategoryActivity.this);
pDialog.setMessage("Loading Topics...");
pDialog.setIndeterminate(true);
pDialog.setCancelable(true);
pDialog.setOnCancelListener(cancelListener);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
category.setVisibility(View.INVISIBLE);
company.setVisibility(View.INVISIBLE);
pDialog.show();
}
這是我的onDestroy方法殺死的AsyncTask -
@Override
protected void onDestroy() {
if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED)
{
mTask.cancel(true);
}
super.onDestroy();
}
最後我也overrided onBackPressed -
@Override
public void onBackPressed() {
super.onBackPressed();
if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED)
{
mTask.cancel(true);
}
Intent intent_main = new Intent(CategoryActivity.this,MainActivity.class);
intent_main.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent_main);
finish();
}
而且我想澄清我的疑問,onBackpressed是否需要進行overrided或Cancellistener會做。
感謝
感謝他的工作。我現在感到很無聊,要檢查進度對話中所有給定的apis。 – akg 2014-08-28 09:21:56