2011-08-28 53 views
4

我是Android的新手,並且在saveInstanceState和管理生命週期方面遇到了一些麻煩。saveInstanceState何時真正使用?

http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle 我讀過關於生命週期的文章,但我並不真正知道什麼時候該進程被殺死,而且我的niceInstanceSate會被使用!我可以按「HOME」,但它只會啓動「onPause」,然後是「onResume」,我想。

如果我進入菜單 - >設置 - >應用程序 - >管理應用程序 - >我的應用程序名稱 - >強制停止,它仍然被視爲一個正在運行的應用程序,但是當我重新啓動它時,我會回到「第一次活動「。因此,就像關閉應用程序一樣,如果我理解的很好,它不會像我希望的那樣「殺死進程」。

因此,這裏是我的問題:

1)我怎樣才能確保我的過程中被殺害(所以我的應用程序將使用savedIntanceState重新啓動時)?

2)如何強制進程被殺死,以測試我的savedInstanceState是否編程良好? 3)當「殺死」後,應用程序重新啓動,並調用「onCreate」(當時有一個savedInstanceState!= null),我是否仍可訪問我在給我打電話時給出的Intent Extra信息活動或Intent的信息在進程被終止時被刪除? 換句話說,我必須在我的saveInstanceState中包含存儲在Intent Extra中的內容的副本嗎?

我希望我不夠清晰;)

+0

您可以使用kill 殺死adb shell中的進程。 –

回答

1

1)所有你需要擔心的是壓倒你的活動的onSaveInstanceState()。 Android會在你殺死你的程序之前調用它。 2)您需要設置Android test project。然後,創建一個擴展爲ActivityInstrumentationTestCase2的測試,通過調用getInstrumentation()可以獲得一個Instrumentation對象。從那裏,您可以撥打Instrumentation.callActivityOnCreate並傳遞一個Bundle對象以用於測試。

3)我非常肯定你會將額外存儲在savedInstanceState包中。

+0

@CnuMar應該已經接受了這個答案。 +1。 – ateiob