2012-01-20 114 views
4

我有一個由報警事件觸發的廣播接收器,它檢查應用程序是否處於空閒狀態(用戶未處於活動狀態)。現在我想重置活動堆棧並將應用程序帶到第一個/默認活動。重置活動堆棧而不開始新活動

但是如果我做這樣的事情:

Intent intent = new Intent(context, StartUp.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 

然後我的應用程序來到前臺。

我想靜靜地這樣做,這樣用戶就不會被我的應用程序中斷(就像他自己正在做其他事情一樣)。

所以我的問題是如何清除活動堆棧而無需啓動活動?

+0

但是,如果您想清除活動堆棧並且不啓動任何活動,您只需要關閉應用程序!否則,當用戶回來時應該呈現什麼活動。 –

+0

我假設你清除活動堆棧,將呈現默認/第一個活動。關閉應用程序也是一種選擇,但是我需要知道我的任何活動是否顯示在屏幕上。如果沒有,我可以關閉應用程序,如果是的話,我可以使用問題中所述的意圖。 – Drejc

回答

3

檢查您的任何活動是否在前景似乎覆蓋here,雖然我還沒有嘗試過。然後如果你想要終止整個應用程序,只需執行:

System.runFinalizersOnExit(true); 
System.exit(0); 

然後你就完成了。希望這會幫助你。

+0

作品完美....這正是我正在尋找。 – Drejc

0

在我頭上,爲什麼不把狀態保存爲例如共享首選項,並且當用戶再次啓動應用程序時,您可以檢測到它需要清除並重新啓動活動。即使用延遲堆棧重置的概念。可能還有其他含義,如SharedPreferences in BroadcastReceiver seems to not update?,只是爲了給出一個想法。