2012-02-17 84 views
0

我的Android應用程序有一個主要的活動,用戶點擊一個按鈕,開始一個「加載活動」與微調,當完成加載後開始結果活動。當您從主屏幕重新啓動應用程序時,如何阻止某個活動被恢復?

加載活動只是一個onCreate函數,它產生一個從Web獲取信息的新線程。

經常在使用我的應用程序一段時間後,加載活動將是從主屏幕恢復我的應用程序時顯示的活動。活動永遠持續下去,微調整個時間。我唯一能做的就是按home鍵關閉應用程序(問題依然存在,直到關閉應用程序爲止)。你如何防止這一點?我希望我的主要活動在這些情況下開始。

我嘗試添加以下重寫功能,但它沒有工作:

@Override 
public void onResume() { 
    super.onResume(); 
    finish(); 
} 
+0

將「finish()」放在「onResume()」中會在每次啓動時關閉您的應用程序。 – 2012-02-17 22:58:01

回答

0

你有沒有考慮過使用LoaderManagerLoaderCallbacks<>實現你異步加載?他們從Honeycomb開始,將其添加到Android中,專門用於您想要完成的任務。

http://developer.android.com/reference/android/app/LoaderManager.html

沒有更多的細節,這是很難告訴你接近這一目標的最佳途徑,但是這可能讓你出具有完整而獨立的活動只是顯示一個微調,而你加載的東西的。

1

嘗試將finish()放入您不希望重新啓動的活動的onPause()中。

1

請勿在單獨的活動中加載數據。這是threads的用途。在後臺加載數據,並在返回數據時在相關Activity中填充UI。

如果您不想混淆線程,則可以使用AsyncTaskLoaders

0

看起來像一個糟糕的程序結構,使用這樣的結束只會使情況變得更糟。看起來你的程序在特定時間掛起,所以你應該專注於修復這個問題,而不是繞開你的方式。檢查你的回調是否被調用,檢查你是否沒有創建比你需要的更多的加載過程,檢查它們是否沒有干擾等。爲了防止你的程序在加載之後加載,你可以簡單地設置一個(靜態)變量並在開始加載過程之前檢查它。

0

我通過一個名爲「determineAction()」的方法來控制我的應用程序的生命週期,該方法檢查各種邏輯狀態。在啓動活動中,如果它有效,則繼續加載,否則它將重定向到其他活動。因此,無需停止或暫停活動,只需將其重新路由到您想要的位置即可。

相關問題