2011-11-21 15 views
7

私はAsyncTaskを持っていて、戻るボタンを押したときに実行をスティッチします。私はまた、以前に表示されたアクティビティに戻るようにアプリをしたい。私はタスクを停止して管理しているようだが、アプリケーションは以前のアクティビティに戻りません。何か案は?これは私のコードからの抜粋ですAndroid - 戻るボタンが押されたときにAsyncTaskを停止して前のアクティビティに戻る

private class MyTask extends AsyncTask<Void, Void, Void> implements OnDismissListener{ 
    private boolean exception= false; 

    @Override 
    protected void onPreExecute(){ 
     pd = ProgressDialog.show(
       IscrizioniActivity.this, 
       "Please wait...", 
       "Loading the data", 
       true, 
       true, 
       new DialogInterface.OnCancelListener(){ 
        public void onCancel(DialogInterface dialog) { 
         MyTask.this.cancel(true); 
        } 
       } 
     ); 
    } 

    @Override 
    protected Void doInBackground(Void... voids) { 
     //do something 
     return (null); 
    } 

    @Override 
    protected void onPostExecute(Void voids) { 
     pd.dismiss(); 
     //do something 

    } 

    public void onDismiss(DialogInterface dialog) { 

     this.cancel(true); 
    } 

} 

よろしくおねがいします。 、あなたの活動で

public void onDismiss(DialogInterface dialog) { 
    this.cancel(true); 
    IscrizioniActivity.this.finish(); 
} 
+0

この答えは役立つかもしれない - > http://stackoverflow.com/questions/7993023/stop-a-thread-downloading-images-activity-finished-finished/7993176#7993176 – guleryuz

答えて

7

pd.setCancelable(true); 
    pd.setOnCancelListener(cancelListener); 
    bCancelled=false; 

pd is your progressdialog box 
、今これを試してみてくださいcancelListner

OnCancelListener cancelListener=new OnCancelListener(){ 
    @Override 
    public void onCancel(DialogInterface arg0){ 
     bCancelled=true; 
     finish(); 
    } 
}; 
+1

それは部分的にトリックでした。私は "OnDismissListnerを実装する"とOnDismissメソッドを取り消しました。 onCancelにfinis()を追加しました。 – lugeno

+0

bCancelledとは何ですか? – Pradeep

+0

@pradeepキャンセルされているかどうかをブールチェックするのに使用されます –

1

あなたはonDismiss()方法でfinish()呼び出しを追加しようとしています。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     MyTask.cancel(); 
     IscrizioniActivity.this.finish(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

この方法を試しましたが、そのトリックはありませんでした。 – lugeno

2

戻るボタンをオーバーライドし、それにAsyncTaskを停止し、現在の活動のための仕上げを呼び出す:

+0

MyTask.stopとはどういう意味ですか?そのような方法はありません。 – lugeno

+0

問題はYourCurrentActivity.finish()にあります。非アクティブメソッドfinish()への静的参照をアクティビティタイプ – lugeno

+0

から知ることができません。私はfinis()の前にこれを入れなければなりませんでした。今は、それが動作するかどうかを確認します。 – lugeno

1

を使用して...

progress_dialog.setCancelable(true); 
progress_dialog.setOnCancelListener(new OnCancelListener() { 

    @Override 
    public void onCancel(DialogInterface dialog) { 
     // TODO Auto-generated method stub 
     YourActivity.this.finish(); 
     } 
    }); 
関連する問題