2013-03-12 79 views
23

已經存在,我有很多的步驟後Activity_1,說恢復活動的開始,而不是如果回堆棧

Activity_2>Activity_3 ....在一些Activity_n我改變有關Activity_1和一些數據請撥打電話

Intent intent = new Intent(Activity_n.this, Activity_1.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

刷新內容。但後來我可以一直回到我開始的Activity_1,這裏有舊數據。

取而代之,我想用上面的代碼調用最初的Activity_1onResume()。或適當標誌

FLAG_ACTIVITY_CLEAR_TOP

考慮任務組成的活動:A,B,C,D,如果d調用 startActivity()與解析爲的成分的意圖 活動B,則C和d將完成和B接收該給定 意圖,導致堆棧現在是:A,B.

那WHA文檔說,但不是我所得到的。

回答

32

您可以添加這兩條線,並嘗試

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

寫在清單文件中活動

<activity 
    android:name=".SettingsActivity" 
    android:launchMode="singleInstance" 
    android:screenOrientation="portrait" > 
</activity> 

「singleTask」和「singleInstance」活動只能開始的任務。它們始終處於活動堆棧的根部。而且,該設備一次只能保存一個活動實例 - 只有一個這樣的任務。

您可以使用SingleTask或SingleInstance

「singleTask」 - 系統將創建一個新的任務和路線的意圖,它的根活動。但是,如果活動的實例已經存在,則系統通過調用onNewIntent()方法將意圖路由到現有實例,而不是創建新實例。

「singleInstance」 - 與「singleTask」相同,但系統不會將任何其他活動發送到持有實例的任務中。該活動始終是其任務的唯一成員。

請參考以下鏈接http://developer.android.com/guide/topics/manifest/activity-element.html

+0

但是這是一個**片段**我正在使用。直到現在我正在使用**片段**的onResume()。其中不包含任何內容像'onNewIntent()'。但是沒有辦法清除整個後臺堆棧並調用一個新的** Activity ** – 2013-03-12 11:02:58

+0

請參見我已經添加了兩行,您可以嘗試這種方式 – Nirali 2013-03-12 11:07:02

+0

謝謝那工作。 – 2013-03-12 11:16:29

4

恢復Activity從堆棧中是否存在或創建一個新的,如果不是

android:launchMode="singleTask" 

此行添加到您的應用程序的AndroidManifest。 xml並用正常的Intent開始活動。

+0

我應該在哪裏寫這個? – GabrielOshiro 2017-02-10 01:22:29

+0

在manifest.xml中 – AhmedNTS 2017-02-10 20:18:36

+2

您應該將其添加到您的答案中,否? – GabrielOshiro 2017-02-11 02:52:26

相關問題