2013-11-28 42 views
0

我有一個活動與多個AsyncTask的,但是當我按回來按鈕,活動重新加載和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(); 
} 
+0

有同樣的問題,我添加了一個如果驗證是否需要啓動loadData – Pull

回答

0

onCreate刪除loadData()和cal我在其他地方。

0

如果您的Activity在其他活動開始之前被銷燬,使用後退按鈕將再次呼叫onCreate,而不是onRestartonResume

有關詳細信息,請參見here

正如Kuffs已經提到,使用Fragment s是要走的路。

醜陋的解決方案,你也可以設置一個共享偏好持有boolean一旦你AsyncTask啓動(或在其onPostExecute),因此它不會檢查你的ActivityonCreate是偏好後再次啓動。

相關問題