小编sta*_*809的帖子

当应用程序在后台运行时,Android 可以在不终止整个进程的情况下终止 Activity 吗?

我想知道当应用程序最小化时,Android 系统是否能够在没有整个应用程序进程的情况下终止该活动。从Android文档中我们知道,onDestroy只有当activity即将被销毁时才会被调用,并且系统保证在将要杀死activity时调用此方法,只有在整个应用程序进程被杀死时才不会被调用。

因此,想象这样一种情况 - 您将应用程序发送到后台(最小化),一段时间后操作系统开始内存不足并决定终止该活动,但由于应用程序当前已挂起并且无法执行代码,因此它不是能够调用它的onDestroy方法,尽管保证它会在每个活动销毁之前被调用。

因此,这种推理让我想到,当应用程序处于后台时,操作系统只能杀死整个进程,而不能杀死某些特定活动。我的推理正确吗,还是我错过了什么?

android android-lifecycle android-activity android-memory android-ondestroy

6
推荐指数
1
解决办法
2680
查看次数

在 deinit 中的 NotificationCenter.default.removeObserver(self),为什么 deinit 它甚至被调用?

从 ios 9 开始,没有必要取消订阅通知中心,因为 ios 会自动处理这一点,但在 ios 9 之前,开发人员必须手动调用NotificationCenter.default.removeObserver(self)以避免内存泄漏,这是常见的地方(在很多教程中都建议和 Stackoverflow 帖子)deinit。所以,我的问题是 - 如何deinit从通知中取消注册,因为deinit只在对象释放之前调用,所以它的引用计数应该是 0,但肯定不是 - 因为我们仍然订阅通知中心。实现这一点的唯一可能方法似乎是使用弱引用,基本上如果通知中心弱引用对象,上述场景是可能的,但在这种情况下,根本不需要取消订阅,因为对象可以很容易地被释放。有人可以澄清一下这是如何工作的。

nsnotificationcenter ios swift deinit

3
推荐指数
1
解决办法
271
查看次数

DispatchQueues 的底层是如何实现的?

我\xe2\x80\x99m很好奇DispatchQueue到底是什么,我试图用谷歌搜索这些信息,但所有文档都相当抽象,并且不\xe2\x80\x99t提供有关实现的任何真实信息。在我的理解中,DispatchQueue是某种存在于某处的实体,能够存储代码块,并由内核直接控制(通过GCD,它被烘焙到内核中),它能够将这些块注入到所选中(通过GCD) /内核)线程。这是 DispatchQueue 的正确愿景,还是我误解了什么?

\n

macos grand-central-dispatch ios dispatch-queue

1
推荐指数
1
解决办法
278
查看次数