Android:AsyncTask运行时按下后退按钮

Use*_*111 6 android android-asynctask android-activity

我有一个ActivityA,有一个按钮.点击后button,它会打开另一个ActivityB.

onCreate()方法ActivityB,我开始AsyncTask连接到服务器并获取结果并将其显示在屏幕上.

这是代码Activity B:

public class ActivityB extends Activity {
    AsyncFetch asyncFetch;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(null != savedInstanceState) {
            return;
        }
        asyncFetch = new AsyncFetch();
        asyncFetch.execute();
    }
}


private class AsyncFetch extends AsyncTask<Object, Void, Object> {
    @Override
    protected void onPostExecute(Object o) {

    }

    @Override
    protected Object doInBackground(Object... params) {
        //contacts the http server.
    }
}
Run Code Online (Sandbox Code Playgroud)

执行时AsyncFetch,当我按回按时,ActivityB不会立即被摧毁.但是在AsyncTask完成后会被破坏.

如何实现这一点以避免反压冻结?我试过以下:

@Override
protected void onDestroy() {
    asyncFetch.cancel(true);
    super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)

但它仍然等待AsyncTask取消或完成.

GMailapp 一样,当我打开一些东西时.在这个过程中,如果我按下后退按钮,它就会出现Activity.

有没有其他方法来实现后台进程?有design pattern没有实现这个?请告诉我.

任何帮助表示赞赏.

Bat*_*kun 2

尝试这个:

@Override
public void onBackPressed() {
    asyncFetch.cancel(true);
    // If you want to finish the activity you can use below code
    // finish(); 
}
Run Code Online (Sandbox Code Playgroud)