2014-10-08 121 views
1

當我的應用程序轉到後臺並且收到廣播時,我的應用程序處於不一致狀態,並且我想確保下次我的應用程序進入前臺時,我啓動Launcher(或根)活動。 要做到這一點,我有以下方法,當應用程序處於後臺時終止所有活動

  1. 我所有的活動,從數據庫中獲取。當恢復檢查基地的應用程序的狀態。如果狀態不一致,請啓動Root活動。問題:應用程序恢復應該很快,並且檢查狀態是一個數據庫調用。還有,我會想要避免的Root活動可見的翻轉。

  2. 抓住廣播接收機中的前景活動,清除任務並啓動主要活動。 問題:我必須保留對所描述的here等頂級活動的參考。

  3. 當達到不一致狀態時,終止廣播接收器中的過程。

什麼是最佳方法?

回答

0

在您的主Activity中,您可以檢查onCreate()中的狀態並繼續啓動主Activity,或者如果您的狀態命令如此,請立即在您的主活動中調用finish()並啓動應啓動的任何適當活動。

2

您可以在您的AndroidManifest.xml中設置android:noHistory="true"

如果用戶從您的應用程序導航(它移動到後臺),則活動完成,因此您的應用程序將重新啓動。


要啓動根activit的事件發生時,才使用此代碼:

Intent intent = new Intent(context, yourRootActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 

這可以確保所有舊的活動完成和新開工活動將是「根系活力」的新任務。 Source

+0

我想要「沒有歷史」它只發生在事件不總是發生時。 – yagnasri 2014-10-08 14:36:54

+0

@yagnasri然後,您需要開始活動並通過標誌,以便所有舊活動結束。看到我更新的答案。 – Manu 2014-10-08 14:49:29

相關問題