2013-08-29 74 views
1

下面我有一個方法可以取消我的asynctask和ProgressDialog。代碼運行良好,但是當你按下後退按鈕時,它也會停止它的一切,但它只會讓用戶盯着一個沒有填充的列表視圖。所以這裏的想法是,當用戶點擊後退按鈕時,它停止了asynctask和ProgressDialog,而不是讓他們看着一個無人居住的listview,我也希望它也把他們帶回到主要活動。任何人都可以幫助我做到這一點嗎?onBackPressed將用戶帶回主要活動

@Override 
public void onBackPressed() 
{    
    /** If user Pressed BackButton While Running Asynctask 
     this will close the ASynctask. 
    */ 
    if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED) 
    { 
     mTask.cancel(true); 
    }   
    super.onBackPressed(); 
} 


@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 


/** If Activity is Destroyed While Running Asynctask 
     this will close the ASynctask. */ 

if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED) 
{ 
    mTask.cancel(true); 
    } 

    super.onDestroy(); 

} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 


if (pDialog != null) 
{ 
    if(pDialog.isShowing()) 
    { 
     pDialog.dismiss(); 
    } 
     super.onPause(); 

    } 

} 

回答

1

super.onBackPressed();

+0

現在還沒有帶我回到主活動 –

+0

你需要調試,看看當你到達終點()如果對話仍然開放。如果是這樣,你需要先解僱它。 –

+0

我發現只是我的進度對話框被解散,但仍然執行asynctask –

0

簡單地調用mTask.cancel(true);不會立即取消AsyncTask添加finish();。您需要定期撥打中的isCancelled() - 如果結果爲true您需要從doInBackground(...)返回。

在這種情況下,將不會調用onPostExecute(...),而將調用onCancelled(),您可以撥打finish()來終止Activity

0

使用: getActivity =的片段,供活動使用ActivityName.this

Intent intent = new Intent(getActivity(), MainActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      finishActivity(false);