在 Android 中将对象"tied"到活动/上下文意味着什么?



我特别询问Android文档中的这一段:

如果您传递的对象由于某种原因绑定到的所有视图和资源都将泄漏活动。

你可以在关于加快屏幕方向变化的页面上找到这一段。

我假设它们是指保持对Activity/Context引用的对象。在我的活动中,我在onRetainNonConfigurationInstance中返回一个HashMap,所以我认为我很好,因为HashMap中的对象都不包含对活动/上下文的引用。但我想确保;我还在学习Android是如何发生泄漏的

Patrick Dubroy已经展示了一个视频教程,展示了类似的东西。然后他开始调试泄漏。我猜您可以遵循相同的过程来确认您的代码是否真的存在泄漏。

你是对的,如果对象保持对活动或上下文的引用,它将不允许GC收集那些未使用的活动,从而产生巨大的泄漏。

我已经在这工作,但需要说明的是,我可能不知道你到目前为止我一直看到WeakRef类型使用但是我不看到人们检查null所以我可以聚集在它如果用户翻转系统周围的电话如果它变得紧可以转储过程~然后我看到迄今为止我学习是我们已经知道的系统。Gc最初的概念并不完全是在手持设备上运行的,因此保存在某种系统表中的指针可以在源代码和硬件中实际发生的事情之间进行转换^可能导致指针在重新进入时是新的,因此当这种情况发生时,它不像仔细编码和测试那样不将refs保存在数据结构中,而不会偶尔"堆走"。

当然要避免静态,除非有理由,就在几天前,我最终写了一些东西作为new Object(){ public methodNamedInAnInterface(){ /* stuff goes here */ }},但后来我想了想,这是一个"最好的努力",我们不能从代码中编程,我们写的问题应该在供应商的代码店完成,在那里访问它实际运行的方式应该是一个正常的和预期的约束

我在我自己的代码中使用静态,但然后我在一个孤立的本地做原型[换句话说,我可以重新开始转储多余的指针]

我正在转换到一种编程思维模式,在这种模式下,代码可以在手持设备上运行,而不是10,000个请求/秒的约束

最新更新