Android 如何将活动保存到磁盘并在重新启动时重新加载

Android 如何将活动保存到磁盘并在重新启动时重新加载,android,android-activity,Android,Android Activity,我有一个myApp,它首先启动ActivityA,然后启动ActivityB。ActivityB相当复杂,包含3个选项卡 我编写了另一个killApp来调用killbackgroundprocess来终止我的应用程序,以模拟系统资源不足,从而回收一些应用程序 单击“主页”按钮,然后运行my killApp以终止我的应用程序,然后再次启动myApp。我看到一个白色背景面板有一段时间,然后ActivityB被重新绘制 我的理解是,当单击home按钮时,myApp的活动存储在磁盘上,当重新启动它时,A

我有一个myApp,它首先启动ActivityA,然后启动ActivityB。ActivityB相当复杂,包含3个选项卡

我编写了另一个killApp来调用killbackgroundprocess来终止我的应用程序,以模拟系统资源不足,从而回收一些应用程序

单击“主页”按钮,然后运行my killApp以终止我的应用程序,然后再次启动myApp。我看到一个白色背景面板有一段时间,然后ActivityB被重新绘制

我的理解是,当单击home按钮时,myApp的活动存储在磁盘上,当重新启动它时,ActivityB位于活动堆栈的顶部,因此再次调用其onCreate。因为ActivityB需要一些时间来初始化它的内容,所以在整个活动准备就绪之前,我看到了一段时间的白色背景

我的问题是:
1.如果应用程序是第一次启动的,就不存在这样的白色背景问题,是不是因为在应用程序启动期间,android系统会将所有资源加载到内存中,所以在创建ActivityB时,不需要等待资源加载


2.如何解决上述白色背景问题?我的想法是将整个活动保存到磁盘,例如将整个活动对象序列化到磁盘,然后再次调用onCreate时,将其反序列化。但我不知道如何实施。有什么建议吗?谢谢

我建议阅读更多关于活动生命周期的内容。

据我所知,您在活动b的OnCreate()上做了一些繁重的工作。这导致了“白色背景”的事情。因为加载所有这些需要时间。您可以尝试使用OnPause()和OnResume()进行序列化/保存,这样就不会影响布局。您是对的。OnCreate做了很多事情。但是,如果应用程序是从新启动的,那么为什么不存在这样的问题呢。我的第一个问题来了。谢谢。这不是因为当你的应用程序从新启动时,它会加载activityA而不是activityB吗?一旦创建activityA,它会立即创建activityB。因此,如果activityB需要那么多时间,那么从新开始也会出现背景问题。所以我猜在应用程序从new开始的过程中会有一些预取操作。首先,你不必编写另一个应用程序来终止你的应用程序。你可以简单地插入并终止应用程序的进程。还请注意,Jelly Bean内置了一系列方便的开发工具,包括“不要保留活动”。如果您想查看每个活动在终止时如何处理状态,请启用这些工具(设置、开发人员选项)。除此之外,还可以查看Noisyas2提到的关于活动生命周期的文档(当您单击home时,您对存储到磁盘上的活动的“理解”是不正确的)。