Android Toast不会消失

时间:2011-09-06 14:48:09

标签: android

即使应用程序关闭后,我也会显示吐司,它不会消失。我该如何解决?

@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;
        }
    });


}

3 个答案:

答案 0 :(得分:46)

它是否在IntentService ???

内运行

如果是这样,问题是Android中的Intent Services运行在与主要线程不同的线程中,因此Toast显示在与主要线程不同的线程中,在显示时间结束后, Android系统无法找到Toast的位置,因此无法将其删除。

我遇到了同样的问题,现在,我建议大家不要在Toast内显示IntentService,而是尝试运行一个commom服务,或者打开一个Activity,或尝试不同的东西展示吐司是完全必要的。

关闭应用程序时Toast不会消失的事实是IntentService仍在运行,您必须重新启动系统或卸载App才能使Intent Service关闭。 / p>

答案 1 :(得分:8)

唯一的解释是你的Toast被循环调用。您应该跟踪toast .show()并查看它是否被无限次调用。

另一种视觉方式是做到这一点

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

我相信你会在一个懒散的时间内看到吐司......

答案 2 :(得分:0)

如果您的设备没有网络连接,并且您的应用会执行许可检查并显示结果Toast,也会发生这种情况。我的一个应用程序遇到了这个问题,因为我在检查应用程序获得许可时显示了Toast。如果没有网络连接,Toast会告诉用户仍然要进行许可证重试,并且当我连接Toast时,该功能会被删除,因为许可证检查可以正常工作。