[英]AsyncTask is restarting when i press back button
我有一個具有多個AsyncTask的活動,但是當我按“后退”按鈕時,該活動被重新加載,並且AsyncTask的再次執行。 我應該怎么做才能回到上一個活動,而不重新加載活動和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();
}
從onCreate
刪除loadData()
並在其他地方調用。
使用片段
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html
片段可以在配置更改期間保留在內存中,因此您可以在其內部運行asynctask。 然后,您可以查詢該片段以獲取任務中所需的任何狀態信息,並相應地更新“活動”。
如果您的Activity
在其他活動開始之前被銷毀,則使用“后退”按鈕將再次調用onCreate
,而不是onRestart
或onResume
。
有關詳細信息,請參見此處 。
正如Kuffs已經提到的那樣,使用Fragment
是必經之路。
在Uglier解決方案中,您還可以在AsyncTask
啟動時(或在其onPostExecute
)設置共享的首選項,該共享首選項將boolean
設置為boolean
,以便在Activity
的onCreate
檢查該首選項后,它不會再次啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.