我有一个 ActivityA
,它有一个 Button。单击按钮
后,它会打开另一个ActivityB
。
ActivityB
的 onCreate()
方法,我正在启动 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.
}
}
在执行 AsyncFetch
时,当我回击时,ActivityB
没有立即被销毁。但是在 AsyncTask
完成后被销毁。
我如何实现此操作以避免后按卡住?我在下面尝试过:
@Override
protected void onDestroy() {
asyncFetch.cancel(true);
super.onDestroy();
}
但它仍然等待 AsyncTask
取消或完成。
像 GMail
应用程序,当我打开某些东西时。在此过程中,如果我按下后退按钮,它就会从那个 Activity
中出来。
还有其他实现后台进程的方法吗?任何设计模式
来实现这个?请告诉我。
感谢任何帮助。
最佳答案
只需自己处理 onBackPressed() 方法:
@Override
public void onBackPressed()
{
if (asyncFetch != null)
asyncFetch.cancel(true);
super.onBackPressed();
}
关于Android:AsyncTask 运行时按下后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26421041/