Android 如果延迟,为什么toast通知会死亡?

Android 如果延迟,为什么toast通知会死亡?,android,eclipse,Android,Eclipse,我不确定这是我的问题的确切原因,但我会解释我注意到的两个症状: 如果我在Toast.makeText(..).show()上放置一个断点,然后在运行之前等待几秒钟,那么Toast将永远不会出现 我有一个位置回调,试图显示祝酒词,但它从未出现。也许我做错了什么,这就是问题所在 任何帮助或指点都将不胜感激 --uber删除链接的源代码行的.getApplicationContext()位。应用程序上下文未附加到窗口,因此您的Toast实际上无法显示。改用活动上下文,它会很好地工作。好的,我想出来了。

我不确定这是我的问题的确切原因,但我会解释我注意到的两个症状:

  • 如果我在Toast.makeText(..).show()上放置一个断点,然后在运行之前等待几秒钟,那么Toast将永远不会出现
  • 我有一个位置回调,试图显示祝酒词,但它从未出现。也许我做错了什么,这就是问题所在
  • 任何帮助或指点都将不胜感激


    --uber

    删除链接的源代码行的
    .getApplicationContext()
    位。应用程序上下文未附加到
    窗口
    ,因此您的Toast实际上无法显示。改用
    活动
    上下文,它会很好地工作。

    好的,我想出来了。我猜我的回调是在UI线程中运行的,在toast之后出现了一条HTTP帖子和一条文本消息,因此UI线程本身阻塞了,而没有处理toast。我的解决方案是把所有繁重的工作放在一个单独的线程中,正如在这里建议和阐述的那样,所以在我这样做之后,一切都神奇地工作了。“上下文”一点问题也没有


    关于2个祝酒词工作而1个不工作的奇怪之处,我认为maketext(…).show()以某种方式处理部分UI祝酒词队列,并可能导致出现祝酒词。

    这是您的第一个问题,Toast只能显示两个预设持续时间中的一个,这两个预设持续时间可能是w.r.t.系统时间而不是线程运行时间。我删除了.getApplicationContext()位,但同一段代码仍然无法Toast。我注意到还有另一个bug导致该部分运行两次,可能是由于某种原因影响了它。我再查一下。更新:这很奇怪。如果我把两个烤面包放在那里,一个接一个,第二个就行了。光是一片吐司是没有任何作用的。Wtf安卓?(顺便说一句,运行两次并没有错误——这就是eclipse——如果在跨多行的断点上按F8,它会在每行上再次中断(尽管它在一行上仅显示为一个断点).toast不需要活动上下文。您也可以显示来自服务或接收者的toast消息。但是,是的,没有使用应用程序上下文添加任何内容。看来您是对的…toast视图根本不属于您的进程,因此不需要附加到您的窗口。这是错误的。为什么要将上下文传递给m方法,然后使用context.getApplicationContext()?此外,人们通常使用关键字“this”当引用基类而不是像您这样引用类名时。我不确定是否存在导致问题的明显差异。getApplicationContext是我试图解决此问题的尝试之一。如果只使用上下文,它仍然不起作用。不使用“this”的原因是什么这是因为它是一个不需要实例化的静态方法(没有“this”)。没错。当您放置断点时,它会暂停UI线程,因此无法立即显示toast消息。当让它再次运行时,toast消息超时已过,因此不再显示