我已经阅读了几个关于何时使用活动以及何时使用应用程序上下文的讨论(例如on this SO post)。
我想知道使用活动或应用程序上下文对方法Toast.makeText()有什么影响。
文档仅简要说明参数context
:
上下文:要使用的上下文。通常是您的Application或Activity对象。
我的问题是
还有什么需要考虑?
答案 0 :(得分:7)
我只会使用Application
上下文。使用您的Activity
上下文意味着对您的活动的引用可能会保持活跃状态,直到Toast停止显示,这可能会将垃圾收集延迟几秒钟。
使用活动上下文时,toast的持续时间是否与活动生命周期绑定?
我没有查看源代码,但我会说它是相反的:您的活动参考将保持不变,直到您的Toast停止显示。
内存泄漏是一个严重的问题吗?
是的,他们是!在这种情况下,它永远不会成为泄漏,因为对活动的引用最终将被垃圾收集。您将使用超过严格需要的内存几秒钟,因此ApplicationContext
更安全。在所有情况下,我都没有看到在这里使用ApplicationContext
的真正缺点。