活动已销毁和进程已终止之间的区别


  1. 当调用onDestroy方法时,只有活动被销毁或进程被杀死?
  2. 当系统破坏活动时,当它杀死进程时?
  3. 活动被破坏和进程被杀死有什么区别?我应该在活动被销毁时清除我的 ArrayList(或者当活动被销毁时,系统将标记它以进行垃圾回收(?如果我必须清除 ArrayList(在 onDestory 方法中(,如果系统在不调用 onDestroy 的情况下杀死应用程序会发生什么。

我正在使用onDestroy方法来关闭光标。

@Override
protected void onDestroy() {
super.onDestroy();
// closing cursor!
mCursor.close();
}

我按下主页按钮,应用程序进入后台。如果系统在没有调用 onDestroy 方法的情况下杀死应用程序,是否会有任何内存泄漏,因为我无法关闭光标(我在 on Destroy 方法中关闭(

当调用onDestroy方法时,只有活动被销毁

是的。

。还是进程被杀死了?

不。

当系统销毁活动时

Android 会在活动完成后销毁活动,例如当用户按下 BACK 按钮时(假设没有其他操作处理 BACK 按钮(。当设备在活动变为可见后发生配置更改时,Android 将销毁可见活动(假设您未在清单中禁用此功能(。Android可能会在终止进程的过程中销毁活动,但不能保证这一点。

当它杀死过程时?

当可用系统内存量不足时,Android 将根据需要终止进程以释放系统 RAM。有关详细信息,请参阅文档。

活动被破坏和进程被杀死有什么区别?

它们没有密切关系。

我应该在活动被销毁时清除我的数组列表吗

我们不知道你指的是什么ArrayList

如果系统在没有调用 onDestroy 方法的情况下杀死应用程序,是否会有任何内存泄漏,因为我无法关闭光标(我在 on Destroy 方法中关闭(

不。进程终止后,将释放与该进程关联的所有内存。

当应用程序进程结束时,JVM 将"清理"应用程序期间使用的所有内存。这意味着如果进程被终止,则不需要释放在其执行期间分配的所有对象/内存。

此外:杀死一个进程不会触发任何"onDestroy(("事件,也不会触发"try {}"块的"最后"部分,但它会在那一刻停止应用程序,而不会让应用程序不做任何其他事情。

像游标这样的特殊东西由JVM管理,JVM将在进程结束时释放它们(使用普通命令或通过"终止进程"过程(,因此在终止进程过程之后不会发生任何内存泄漏。 当您分配内存块(使用 "malloc(("(时,JNI 中也会发生相同的行为。

内存泄漏仅在您的应用程序仍在 JVM 内运行时发生,而不是在它被终止时发生。

最新更新