2011-01-20 81 views
3

我開始我的Android應用程序,該應用程序依次在第一個屏幕上初始化某些狀態。該應用程序有很多屏幕,在隨機瀏覽一些屏幕後,我使用「主鍵」最小化應用程序。現在,在運行手機中的其他應用程序之後,操作系統決定釋放我的應用程序並因此殺死它。通過Android清除應用程序

現在,當我的應用程序圖標再次單擊,操作系統會記住歷史,並試圖回到屏幕從我最小化的應用程序。但是,問題在於操作系統有時候清除了我的應用程序,我的所有狀態都丟失了,屏幕可能沒有任何關聯。

如何解決呢?如何確保操作系統調用啓動器屏幕,如果它已被清除而不是歷史記錄中的活動?

回答

3

從你對單身類以上的評論被初始化我類似,你也面臨的情況。由於我無法避免它,我所做的是我使用了Application類。每當操作系統決定清除您的應用時,下次啓動應用時,Application class上的onCreate將被調用。重寫onCreate方法來初始化單例類,而不是在啓動屏幕

的代碼片段如下所示

public class CellApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     // Do your singleton class initialization here 
    } 
} 
2

你不確保OS調用啓動畫面。解決此問題的最佳方法是保存屏幕狀態。

你的活動每次一個放在後臺onSaveInstanceState被調用。這使您可以將應用程序的狀態保存到此方法提供的包中。如果您的應用程序繼續使用,則將使用完全相同的包進行調用。現在您可以重建應用程序,使其處於用戶離開它的相同狀態。

只是檢查如果在的onCreate捆綁爲空。如果它爲空,那麼如果不從捆綁重建狀態,則您的活動是新的。

+0

我的情況不是那麼簡單的做同樣的。我有一個巨大的單例類,在整個應用程序使用的啓動器屏幕上實例化。現在,當我的應用程序從一個隨機屏幕而不是啓動屏幕開始,這個單身並沒有初始化。而事情就是要折騰。 – Codevalley 2011-01-20 08:03:03

+0

也許你必須考慮這個單例練習;)如果單例不可用,則可以完成onCreate方法中的每個活動。這應該使用戶回到啓動器屏幕,因爲您創建的活動的靜態將關閉。 – Janusz 2011-01-20 08:50:49

相關問題