在Android中使用Toast的上下文?

时间:2016-06-16 14:25:10

标签: android android-context android-toast

我刚学会了我可以使用:

Toast.makeText(MainActivity.this, R.string.some_string,Toast.LENGTH_SHORT).show();

,或者

Toast.makeText(getApplicationContext(), R.string.some_string,Toast.LENGTH_SHORT).show();

在Android中显示Toast。

之前我认为上下文实际上是父窗口的一种句柄,应该显示它,但documentation对此不清楚。

然后我遇到了这张桌子: enter image description here

它似乎也没有提到准确用于Toast的上下文?

编辑:

上下文就像父窗口"句柄一样#34;像Toast这样的子窗口?或者它实际上是否允许Toast.makeText访问资源或什么?

如果上下文不重要,为什么要使用它?

4 个答案:

答案 0 :(得分:0)

您只能从UI(主线程)上下文显示Toast。如果您想在服务中显示此内容(但这与Google指南相矛盾),您可以这样做:Show toast at current Activity from service

答案 1 :(得分:0)

对于短命的祝酒词,你通常可以使用你想要的任何上下文。通常,您将使用活动上下文,但应用程序上下文也可以。

答案 2 :(得分:0)

我建议您在案例中使用该活动。因为你是从活动本身打来的。活动是一个Context,您正在使用活动上的方法来获取另一个上下文(应用程序)。这有点不必要。

但是,如果您正在从其他地方致电吐司,那么使用该应用程序可能是个更好的主意,因为在您的应用处于活动状态时,应用程序将始终存在。

答案 3 :(得分:0)

看着Toast.java,我看到Context仅用于:

  • 获取Resources
  • 获取软件包名称
  • getText实际上与#1相同

因此,显然Activity还是ApplicationContext并没有什么区别,除非这些资源取决于主题(据我所知,情况并非如此)。

不,从任何意义上讲,传递给Toast的上下文都不是父窗口的句柄。