我有一个名为ActivityA
的活动,其中有一个按钮。点击该button
后,它会打开另一个ActivityB
。
ActivityB
的onCreate()
方法中,我启动了一个AsyncTask
,它连接到服务器并获取结果,并将其显示在屏幕上。
这是ActivityB
的代码:
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.
}
}
在执行AsyncFetch
时,当我按下后退键时,ActivityB
不会立即被销毁。但是在AsyncTask
完成后才会被销毁。
如何实现避免后退键冻结? 我尝试了以下方法:
@Override
protected void onDestroy() {
asyncFetch.cancel(true);
super.onDestroy();
}
但是它仍然等待AsyncTask
取消或完成。
像GMail
应用程序一样,当我打开某个东西时。在处理过程中,如果我按下返回按钮,它就会退出该Activity
。
是否有其他实现后台处理的方法?有没有实现这个的设计模式
?请告诉我。
任何帮助都将不胜感激。