2011-08-28 50 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