简体   繁体   English

Android - 按下后退按钮时停止AsyncTask并返回上一个Activity

[英]Android - Stop AsyncTask when back button is pressed and return to previous Activity

I've an AsyncTask and I want it to stip execution when back button is pressed. 我有一个AsyncTask,我希望它按下后退按钮时执行。 I also want the app to return to the previous displayed Activity. 我还希望应用程序返回到之前显示的Activity。 It seems I've managed in stop the Task but the app doesn't return to the previous activity. 似乎我已经设法停止任务,但应用程序没有返回到上一个活动。 Any ideas? 有任何想法吗? This is an extract from my code 这是我的代码摘录

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);
    }

}

Regards. 问候。

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

 pd is your progressdialog box

and now use cancelListner 现在使用cancelListner

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

In your activity, override Back Button, stop the AsyncTask in it, and call finish for current activity. 在您的活动中,覆盖后退按钮,停止其中的AsyncTask,并为当前活动调用完成。

@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);
}

Try this one... 试试这个......

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

    @Override
    public void onCancel(DialogInterface dialog) {
        // TODO Auto-generated method stub
        YourActivity.this.finish();
        }
    });

Have you tried adding a finish() call in the onDismiss() method: 您是否尝试在onDismiss()方法中添加finish()调用:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 当按下后退按钮时如何在android中停止asynctask - How to stop asynctask in android when back button is pressed 当按下后退按钮时,如何停止android中的asynctask? - How can I stop asynctask in android when back button is pressed? 当按下“后退”按钮时,在片段中停止AsyncTask - Stop AsyncTask in Fragments when Back Button is pressed 在 android 中按下后退按钮时如何将数据传递到上一个活动? - How to pass the data when back button is pressed in android to previous activity? 按下“后退”按钮时如何返回上一个活动? - How to go back to Previous Activity when Back button is pressed? Android活动-按下后退按钮不起作用 - Android Activity - Back button not functional when pressed 如何返回上一次活动后退? - how to return back to previous activity on back pressed? Android:当按下后退按钮时,如何控制上一个活动中数据的重新加载 - Android : How to control reloading of data in previous Activity when back button pressed 按下“后退”按钮时,将正确的信息传递给上一个活动 - Passing The Proper Information To Previous Activity When Back Button Pressed 如何在按下“后退”按钮时阻止活动重新开始? - How to stop an activity from restarting when back button is pressed?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM