2011-12-20 86 views
1

可以说,活动A以意图开始活动B并传递额外数据。然后由于内存问题,系统杀死了我的进程。然后让我们说我的应用程序被带到了前台,也假设活动A是清单中的启动活动,那么它会启动活动B(可能首先启动A),因为它是最后一个活动。android:如果Activity被杀,重启后会发生什么?

如果它提出了Activity B然后在onCreate()我有权访问我原来的打算,或者我有什么办法来知道系统重新启动我的活动?

回答

0

如果活动杀害 - 你会得到酶活性的 - 我想在你的maifest文件你有意向过滤器只有一个活动<category android:name="android.intent.category.LAUNCHER" />

+0

我的意思是系统杀死了我的进程。根据我所知当这种情况发生时,系统会恢复进程的最后一个活动 – 2011-12-20 05:58:55

+0

您可以通过手动杀死进程来检查此问题 - 在首选项 - 应用程序中 - 在您的应用程序信息中有按钮强制停止。 – Jin35 2011-12-20 06:23:08

+0

谢谢。如果您用强制停止手动杀死该进程,则会从该进程中启动应用程序。但我读到,如果系统为了节省内存,可以杀死进程,然后恢复应用程序的最后一个可见活动。 – 2011-12-20 09:05:46

0

“然后,系统杀死,因为内存问题,并重新启动我的处理。然后将其恢复最后一项活动,即B“。

这是错误的,你应该从你的问题中删除它。

如果系统需要内存并杀死您的活动进程,则不会再恢复它。它可以重新启动,但是它会从具有在清单中定义的启动意图的活动开始(或由broadcastlistener,alarmmanager或notification)。

我明白你的问题:

如果活动已经从活动堆栈中删除(因为系统所需的内存),并重新启动它,你必须访问原始调用的意图。

这样解释,很容易看出答案是否定的。由于重新启动被杀活动的唯一方法是使用新的Intent,旧的意图自然不可用。

如果你想从你的活动,被杀害的一个实例访问数据,您需要将其保存的onSaveInstanceState中。下次启动活动时,保存的状态将在OnCreate方法中提供。

Process Lifecycle:3后台活动

利用这一点,你可以保存原来的呼叫意图,并用它来重新创建活动。在做这件事之前,我会非常仔细地考虑这对用户体验的影响。

+0

我编辑了我的帖子。因此,活动B有可能以任何可能的方式出现。我提出这个问题是因为我读过人们说B,因为它的最后一个活动可以出现,而且它没有正确初始化,只是想确认一下。另外我不确定是否在Activity被销毁时总是调用OnSaveInstanceState。 – 2011-12-21 10:03:59

相关问题