Toast:Docs的教程说使用getApplicationContext,但是Docs References说使用getApplication或getActivity

时间:2019-05-11 14:42:15

标签: android android-context toast android-toast

https://developer.android.com/guide/topics/ui/notifiers/toasts:在源示例中,他们使用getApplicationContext

https://developer.android.com/reference/android/widget/Toast.html#makeText(android.content.Context,%20int,%20int):“上下文:要使用的上下文。通常是您的Application或Activity对象。”

我们到底该使用什么?

要回答这个问题,我认为应该考虑一下...:

  • 片段中定义的对象Toast的生命周期,然后是活动中定义的Toast的生命周期
  • 如果我们使用getActivity,则内存泄漏的风险取决于Toast

https://blog.mindorks.com/understanding-context-in-android-application-330913e32514:在这里,似乎getActivity应该使用Toast

1 个答案:

答案 0 :(得分:1)

  

我们到底该使用什么?

通常来说:如果将Context应用于UI上的某些内容,请使用Activity,以便可以考虑您当前的主题。 Toast是用户界面;因此,请使用Activity

实际上,我认为Toast不一定使用主题中的任何内容。

  

在片段中定义的对象Toast的生命周期,然后在活动中定义的Toast的生命周期

因为片段与Toast无关,所以它们是同一回事。您不会将Fragment传递给Toast上的任何方法。

  

如果我们使用getActivity,则存在内存泄漏的风险,这取决于Toast

由于Toast是短暂的,因此任何可能的泄漏都是短暂的。当泄漏材料的引用时间不确定时,泄漏是一个问题,因此将无法清除。