【发布时间】:2013-11-28 14:43:12
【问题描述】:
我有一个包含多个 AsyncTask 的 Activity,但是当我按下返回按钮时,Activity 会重新加载,并且 AsyncTask 会再次执行。我应该怎么做才能回到上一个活动而不重新加载活动和异步任务?请帮忙。
public class LugarActivity extends SherlockActivity {
CargarDatos cargarDatos;
CargarComentarios cargarComentarios;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lugar);
cargarDatos = new CargarDatos();
cargarCometarios = new CargarComentarios();
loadData();
}
public void loadData(){
cargarDatos.execute();
}
public void loadOtherData(){
cargarComentarios.execute();
}
public class CargarDatos extends AsyncTask<Integer, Integer, String>{
@Override
protected String doInBackground(Integer... params) {
// here download data
}
@Override
protected void onPostExecute(String html) {
loadOtherData();
}
}
public class CargarComentarios extends AsyncTask<Integer, Integer, String>{
@Override
protected String doInBackground(Integer... params) {
// here download data
}
}
}
已修复!
我修复了 Singleton 类的问题:
public class DataManager {
private static DataManager instance = null;
protected static boolean isShowingTheView = false;
protected DataManager() { }
public static synchronized DataManager getInstance() {
if (instance == null) {
instance = new DataManager();
}
return instance;
}
}
在活动中我添加了这段代码:
DataManager dataManager = new DataManager();
if(!dataManager.isShowingTheView){
loadData();
dataManager.isShowingTheView = true;
}else{
finish();
}
最后我重写了 onDestroy() 方法
@Override
public void onDestroy(){
dataManager.isShowingTheView = false;
super.onDestroy();
}
【问题讨论】:
-
遇到了同样的问题,我添加了一个 if 来验证是否需要启动 loadData
标签: java android android-activity android-asynctask