Android的吐司不会消失

我显示敬酒,即使在应用程序closures后,它也不会消失。 我该如何解决?

@Override public void onClipStoreLoadedClipsNotification(ClipStoreLoadedClipsNotification notif) { final ClipStoreLoadedClipsNotification notification = notif; runOnUiThread(new Runnable() { @Override public void run() { Dialogs.DismissAll(); list.onRefreshComplete(); TextView text = (TextView)findViewById(R.id.loadclipstext); ProgressBar pb = (ProgressBar)findViewById(R.id.loadclipsprogress); if (notification.moreClipsAvailable) { text.setText(context.getString(R.string.loading_clips)); pb.setVisibility(View.VISIBLE); } else { text.setText(context.getString(R.string.no_clips)); pb.setVisibility(View.INVISIBLE); int duration = Toast.LENGTH_SHORT; Toast.makeText(SugarLoafContext.playbackTabContext, "No clips found.", duration).show(); } SugarLoafContext.currentCamera = notification.camera; clipList = notification.clips; refreshListView(); readyToLoadMoreClips = true; if (!firstClipsLoaded) firstClipsLoaded = true; } }); } 

Solutions Collecting From Web of "Android的吐司不会消失"

唯一的解释是你的Toast被循环调用。 你应该跟踪toast .show() ,看看它是不是被称为无限次。

另一种视觉方式是做这个

  Toast.makeText(SugarLoafContext.playbackTabContext, "No clips found.", duration).show(); Toast.makeText(SugarLoafContext.playbackTabContext, "Do you understand now?", duration).show(); 

我相信你们在一个平时会看到两个烤面包

它运行在一个IntentService

如果是这样,问题在于Android中的Intent Services运行在与主系统不同的线程中,所以Toast显示在与主系统不同的线程中,在显示时间结束之后,Android系统是无法find吐司在哪里,所以它不能删除它。

我有同样的问题,现在,我build议大家不要在IntentService显示Toast ,而是尝试运行一个IntentService服务,或者打开一个Activity,或者如果完全需要显示Toast,则尝试一些不同的方法。

当您closures应用程序时Toast并不会消失的事实是IntentService仍在运行,您必须重新启动系统或卸载应用程序以使Intent Serviceclosures。

如果您的设备没有networking连接,则也会发生这种情况,您的应用会执行许可证检查并显示Toast结果。 我的一个应用程序有这个问题,因为我在检查应用程序时显示一个吐司许可。 在没有networking连接的情况下,Toast告诉用户仍然需要执行许可证重试,并且当我连接Toast时被移除,因为许可证检查可以工作。