Android - 当 android 释放在 onCreate 中创建的数据的内存时会发生什么
Android - What happens when android frees up memory of data that was created in onCreate
假设我在 onCreate
中初始化了一堆东西,然后将应用程序置于后台一个小时。当我继续使用该应用程序时,如果 Android 释放了在 onCreate
中初始化的内容,会发生什么情况? onCreate
会被再次调用吗?我问是因为我考虑在 onResume
中移动一些东西而不是 onCreate
,这在再次调用 onCreate
的情况下是不必要的。
What happens if Android frees stuff that was initialized inside onCreate when I continue using the app?
一般来说,Android不会那样做。 Android 可能 终止您的进程,在这种情况下一切都消失了,您将在下一次应用启动时从头开始。
但是,如果您的进程设法在后台存活了一个小时,那么大多数一切都会在您离开它的地方。某些库可能会在您的应用程序移至后台时专门尝试释放一些内存(例如,图像加载库中的缓存),以尝试降低终止进程以释放系统 RAM 的可能性。
文档有 a bit of material on the process lifecycle.
Will onCreate be called again?
如果 Android 终止了您的进程,那么是的,任何已启动的 activity 中的 onCreate()
将被再次调用。如果您的进程幸存下来,则 activity 已经创建,因此不会再次调用 onCreate()
。 onStart()
和 onResume()
在任何一种情况下都会被调用。
假设我在 onCreate
中初始化了一堆东西,然后将应用程序置于后台一个小时。当我继续使用该应用程序时,如果 Android 释放了在 onCreate
中初始化的内容,会发生什么情况? onCreate
会被再次调用吗?我问是因为我考虑在 onResume
中移动一些东西而不是 onCreate
,这在再次调用 onCreate
的情况下是不必要的。
What happens if Android frees stuff that was initialized inside onCreate when I continue using the app?
一般来说,Android不会那样做。 Android 可能 终止您的进程,在这种情况下一切都消失了,您将在下一次应用启动时从头开始。
但是,如果您的进程设法在后台存活了一个小时,那么大多数一切都会在您离开它的地方。某些库可能会在您的应用程序移至后台时专门尝试释放一些内存(例如,图像加载库中的缓存),以尝试降低终止进程以释放系统 RAM 的可能性。
文档有 a bit of material on the process lifecycle.
Will onCreate be called again?
如果 Android 终止了您的进程,那么是的,任何已启动的 activity 中的 onCreate()
将被再次调用。如果您的进程幸存下来,则 activity 已经创建,因此不会再次调用 onCreate()
。 onStart()
和 onResume()
在任何一种情况下都会被调用。