當我的應用程序空閒時,Android會終止進程。 如果用戶在一段時間後重新打開應用程序,則只會創建最上面的Activity - 這對我來說是個問題,因爲該活動取決於其他對象(現在被銷燬)的初始化。死亡後重新啓動Android應用程序
我想在這種情況下做的是重新啓動應用程序。 我該怎麼做?
當我的應用程序空閒時,Android會終止進程。 如果用戶在一段時間後重新打開應用程序,則只會創建最上面的Activity - 這對我來說是個問題,因爲該活動取決於其他對象(現在被銷燬)的初始化。死亡後重新啓動Android應用程序
我想在這種情況下做的是重新啓動應用程序。 我該怎麼做?
您應該考慮在應用程序的Application
類的實現中存儲這些對象。
如果這些對象包含需要更持久的狀態,則應在每個活動的onPause()
方法中將這些對象的狀態保存到數據庫,SharedPreferences中或遠程保存。
即使你將它們放在'Application'類中,在Android進程被殺死之後,對象將會丟失,並且你不會從「初始化活動」開始,而是以最後一個可見的開始。 – 2012-07-24 07:27:00
只需確定你的Application
被推出後,這是以前由Android破壞,你可以通過保持一個變量在自定義Application
類做到這一點,並將其設置爲true
您的應用程序了初始化後。因此,當applicaction在重新啓動時,該標誌是假的,然後就做出Intent
啓動您的主Activity
指定FLAG_ACTIVITY_CLEAR_TOP
:
Intent reLaunchMain=new Intent(this,MainActivity.class);
reLaunchMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(reLaunchMain);
我應該在哪裏放這個代碼?它崩潰,如果我這樣做onCreate的活動 – 2012-07-24 07:43:44
你會得到什麼異常?當你現在你的應用程序被Android重新啓動時,你應該調用它。 – 2012-07-24 08:09:37
@OvidiuLatcu嗨,應用程序對象重新創建時,你在(和重新創建)的活動不是發射器?我得問這個問題是因爲在重新創建活動時我無法連接調試器。 Tks – 2014-01-05 13:38:16
我想這個答案只爲你。
完成正在進行的呼叫在這之後
finish();
Intent intent = new Intent(this, sameactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
安卓殺死一個應用程序來釋放內存。因此,如果應用程序處於空閒狀態,那麼在操作系統需要內存來執行其他程序的某個時間後,該應用程序可能會被殺死。 – gkris 2012-07-24 07:22:28
也許你需要在後臺的服務來保持你的_vital__objects_運行。您可以使用「粘滯意圖」來確保服務在被終止時重新啓動。 – DroidBender 2012-07-24 07:22:55