Android 啥时候会在不破坏整个进程的情况下破坏活动?

Posted

技术标签:

【中文标题】Android 啥时候会在不破坏整个进程的情况下破坏活动?【英文标题】:When does Android destroy activity without destroying the entire process?Android 什么时候会在不破坏整个进程的情况下破坏活动? 【发布时间】:2021-10-17 02:14:09 【问题描述】:

我想了解和模拟 android 何时调用我的活动的onDestroy()不破坏整个过程。我没有打电话给finish(),我想让Android自行销毁我的活动。

来自activity-lifecycle documentation:

系统从不直接杀死活动以释放内存。相反,它会杀死 Activity 运行的进程,不仅会破坏 Activity,还会破坏进程中运行的所有其他内容。

但是Android Activity documentation 说:

发生这种情况 (onDestroy) 可能是因为 [...] 系统正在临时销毁该 Activity 实例以节省空间。

那么它是哪一个? Android 是在内存不足时销毁 Activity,还是只杀死整个进程?

我想模拟一种情况,Android 杀死活动而不杀死整个进程。 我可以通过使用“不保留活动”开发者模式设置来模仿这一点,但我想了解这在现实世界中是如何发生的。

【问题讨论】:

如果您有低内存设备并且您的应用有一个活动堆栈系统可以销毁(并保存实例状态)底部的以节省内存,同时仍在您的应用进程内。 另一种常见的情况是方向改变(Activity被销毁并以新的方向重新创建) 【参考方案1】:

我想让 Android 自行销毁我的活动。

Android 不会这样做,除非通过您的操作(例如,finish())或用户操作(例如,返回导航、配置更改)。

那是哪一个?

前者(Android 会杀死进程,而不是活动)。见this answer from the woman who wrote this stuff。 FWIW,另见this decade-old blog post of mine。

【讨论】:

以上是关于Android 啥时候会在不破坏整个进程的情况下破坏活动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不破坏相机应用程序的情况下在Android手机上打开手电筒[重复]

有没有办法在不读取整个文件的情况下推断文件是啥图像格式?

有没有办法在不读取整个文件的情况下推断文件是啥图像格式?

有没有办法在不读取整个文件的情况下推断文件是啥图像格式?

有没有办法在不读取整个文件的情况下推断文件是啥图像格式?

如何在不破坏滚动功能的情况下将 UIImage 添加到 UIScrollView?