Toast.makeText() - 活动或应用程序上下文

9

我已经阅读了一些关于何时使用活动(activity)和何时使用应用程序上下文(application context)的讨论(例如此SO帖子)。

我想知道在使用方法Toast.makeText()时,使用活动或应用程序上下文的影响是什么。

文档只简要说明了参数context

Context:要使用的上下文。通常是您的应用程序或活动对象。

我的问题是

  • 当使用活动上下文时,toast的持续时间是否受活动生命周期的限制?
  • 内存泄漏是否是一个严重的问题?它们似乎仅受到toast持续时间的限制。

还有什么需要考虑的吗?


2
内存泄漏是一个严重的问题。如果你浪费内存,你可能会冒着没有足够内存的风险。 - Zoe stands with Ukraine
1个回答

12

我会使用Application上下文。使用Activity上下文意味着对您的Activity的引用可能会一直存在,直到Toast停止显示,这可能会延迟垃圾回收几秒钟。

当使用activity context时,Toast的持续时间是否与activity生命周期绑定?

我没有查看源代码,但我认为相反:您的Activity引用将保留,直到Toast停止显示。

内存泄漏是一个严重的问题吗?

是的!在这种情况下,它不会永远泄漏,因为对活动的引用最终将被垃圾回收。您将比严格需要的多使用一些内存,所以ApplicationContext更安全。在所有情况下,我没有看到使用ApplicationContext的真正缺点。


2
谢谢你的回答。使用活动上下文的唯一原因是如果toast的生命周期与活动生命周期绑定在一起。既然这似乎不是这种情况,我完全同意。 - Peter F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接