2012-04-21 52 views
1

我有活性的,上面有一個按鈕,從當返回按鈕被按下我回來到活動一個頗爲此活動B點擊可前往[時候到活動B.現在明顯。但再次當我點擊活動A上的按鈕時,活動B的新實例就會啓動。保存一個活動的實例來重用

我詢問:有沒有一種方法,這樣,當我按下活動B後退按鈕它的實例存儲,所以當我再次點擊B的保存的情況下啓動的,而不是一個新的活動A按鈕。

希望有一個解決方案..

+2

出於興趣,爲什麼? – barry 2012-04-21 13:48:06

+0

我同意巴里。無論你想要解決什麼問題,都可以通過其他方式更好地解決,但是你拒絕解釋你認爲你正在解決什麼問題。 – CommonsWare 2012-04-21 14:01:35

+0

我也同意。如果需要保存/恢復ActivityB實例中的數據,則只需將該數據放入共享首選項中,並在創建ActivityB的新實例時從其中重新加載該數據。通常沒有理由保留Activity的實例,以防用戶返回。 – 2012-05-16 14:46:11

回答

0

,如果你不希望傳遞數據..或只是想回到上一次活動的

finish() in onClick 
+0

Infact我想阻止finish()在ActivityB中被調用,當後退按鈕被按下時,當我從ActivityA重新啓動它時,我得到B的同一個實例,返回 – aniketzr 2012-04-21 13:23:56

0

http://developer.android.com/reference/android/app/Activity.html

此外,方法的onSaveInstanceState(束)被放置活動在這樣的背景狀態之前調用,讓您的任何動態實例狀態在您的活動保存消失在給定的捆綁,在的onCreate(捆綁)在稍後收到如果活動需要重新-created。

+0

感謝您的回覆,但是在頁面中它明確提到 「onPause()和onStop()被調用時的一個示例,而不是此方法是當用戶從活動B返回到活動A時:不需要在B上調用onSaveInstanceState(Bundle),因爲特定的實例永遠不會被恢復,所以系統避免調用它。「 所以我想onsaveinstance不會爲我提供解決方案:( – aniketzr 2012-04-21 13:26:13

0

認爲它不會是容易對付它。在android活動可以是商店,但是,當你瀏覽到活動B.

閱讀此鏈接http://developer.android.com/reference/android/app/Activity.html

它給你可以用做所有的信息你不能叫Android系統使用您的這個實例但並非全部如你所願。

當您從活動B瀏覽到一個活動在android本身在內存暫時被儲存您的活動B的實例,該實例將徹底隨時後來摧毀。如果您再次從A導航到B,則活動B的實例將在內存中仍然存在時再次重用,否則將再次重新創建活動。在任何情況下,活動B都是重用或重新創建,onCreate方法始終是調用(生命週期中的所有方法,如onResume ...等),那麼您的活動B的所有數據現在都是新數據,而不是您的舊數據,然後再導航到活動A.這是android系統正在執行的操作,因此如果不調用這些方法,則無法啓動活動B.

如果您希望活動B看起來像以前一樣導航到活動A,您應該在活動B的onPause()方法中保存必要的數據,然後將這些數據設置回活動B的組件調用onCreate()。在這種情況下不應該使用onSaveInstanceState(Bundle)方法,因爲蜂窩(3.0)之前的android os版本沒有被調用該方法。

這可能是很難通過自己來處理,如果你是在線數據或ListView,網頁流量...等工作,也節省了數據它可能的風險,你的應用程序本身。

無論如何,我希望這能對你有所幫助。

+0

謝謝你這樣一個詳盡的和詳細的解釋。我想我在這裏要求一個困難的:( – aniketzr 2012-04-23 14:13:34

相關問題