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

Pet*_*r F 6 android toast android-context android-toast

我已经阅读了几个关于何时使用活动以及何时使用应用程序上下文的讨论(例如在此SO帖子上).

我想知道使用活动或应用程序上下文对Toast.makeText()方法有什么影响.

文档仅简要说明参数context:

上下文:要使用的上下文.通常是您的Application或Activity对象.

我的问题是

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

还有什么要考虑的?

mbo*_*nin 8

我只想使用Application上下文.使用您的Activity上下文意味着对您的活动的引用可能会保持活跃状态​​,直到Toast停止显示,这可能会延迟垃圾收集几秒钟.

使用活动上下文时,toast的持续时间是否与活动生命周期绑定?

我没有查看源代码,但我会说它是相反的:您的活动参考将保持到您的Toast停止显示.

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

对,他们是 !在这种情况下,它不会永远泄漏,因为对活动的引用最终将被垃圾收集.您将使用比严格需要更多的内存几秒钟,因此ApplicationContext更安全.在所有情况下,我都没有看到使用ApplicationContext这里的真正缺点.

  • 感谢您的回答.使用活动上下文的唯一原因是如果toast的生命周期与活动生命周期有关.由于情况似乎并非如此,我完全同意. (2认同)