2016-01-17 50 views
0

我現在面臨一個問題。當我退出應用程序並重新打開時,它會向我顯示以前的活動。有什麼方法可以在重新打開應用後啓動MainActivity?我試着使用,但無濟於事:重新打開應用程序,不顯示以前的活動

SecondActivity.this.finish(); 
Intent intent = new Intent (SecondActivity.this, MainActivity.class); 
startActivity(intent); 

android:noHistory="true" 

請幫我謝謝你。

+0

與活動,您都面臨這個問題閱讀。用流量解釋來幫助你更好。另外'noHistory'是哪個活動。 – Tauqir

+0

我正在做一個時間延長應用程序。所以基本上用戶將不得不填充擴展活動(SecondActivity)中的字段,填充後,它會將用戶重定向到Mainactivity。我通過MainActivity.this.finish()提供了一個對話框來退出應用程序; System.exit(0); 。然而,當我重新打開應用程序(我沒有殺死應用程序),它顯示擴展頁面(SecondActivity)。正確的是,當我重新打開時,它應該顯示我的MainActivity而不是SecondActivity。 – redblackwhite

回答

0

使用此:

Intent intent = new Intent (SecondActivity.this, MainActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
finish(); 

看到這裏Clear the entire history stack and start a new activity on Android

如果你想打電話給finish(),你應該這樣做一個startActivity調用後,如果您在任何生命週期回調的做到這一點,它可能在不同的時刻被呼叫,而不僅僅是在導航到其他活動時。

noHistory的好事,是系統需要在正確的時刻 finising活動(你可以閱讀here,該系統實際上將要求你完成()方法),這樣你就可以照顧確保你不叫它在一個糟糕的時刻,一切都是安全的(可能這似乎並不重要了,但是在多線程工作時,它可能是,例如)

也試圖瞭解Empty process

一個不保存任何活動應用程序的進程提示組件。 保持這種進程活着的唯一原因是爲了緩存 的目的,以便在組件下次運行組件時需要 以提高啓動時間。系統通常會殺死這些進程,以平衡進程緩存和底層 內核緩存之間的整體系統資源。

一個空的進程是一個不包含任何活動的應用程序 組件。保持這樣一個過程的唯一原因是作爲一個 緩存,以在下一次運行其應用程序的組件時提高啓動時間。因此,爲了在這些空的緩存進程和底層內核緩存之間平衡整個系統資源,系統通常會終止這些進程。

這裏http://developer.android.com/guide/topics/processes/process-lifecycle.html

相關問題