如何停止显示Toast消息,这是在队列中android



下面的代码显示了我目前的实现,这里我创建了一个toast对象并在onPause()中关闭。在没有toast队列之前,此操作可以正常工作。

public static long **savedTimeStamp=0**;
    Toast showToastMessage;
if(System.currentTimeMillis()/1000 - savedTimeStamp >= 60 || savedTimeStamp==0){
    showToastMessage=Toast.makeText(this.this, "Toast message", Toast.LENGTH_LONG);
    showToastMessage.show();
    savedTimeStamp=System.currentTimeMillis()/1000;
}
    @Override
             protected void onPause() {
                  super.onPause();
                  if(showToastMessage!=null)
                    {
                    showToastMessage.cancel();
                    }
    }

我发现只使用Toast的一个实例效果最好。第一次分配它,然后用setText更新它并重新显示。然后cancel按预期工作,因为只有一个实例要取消。

if (showToastMessage != null) {
    showToastMessage.setText("New Toast message");
    showToastMessage.show();
} else {
    showToastMessage = Toast.makeText(showString.this,"First Toast message",Toast.LENGTH_LONG);
    showToastMessage.show();
}

创建一个像这样的泛型类:

public class JToast {
private static Toast toast;
private static int LENGTH_LONG=Toast.LENGTH_LONG;
private static int LENGTH_SHORT=Toast.LENGTH_SHORT;
public static Toast makeText(Context context, String text, int duration) {
    if (toast != null) {
        toast.cancel();
    }
    toast = Toast.makeText(context, text, duration);
    return toast;
}
    public void show(){
        toast.show();
    }
}

你只要叫

就能得到祝酒词
JToast.makeText(context, "My Toast Message", JToast.LENGTH_SHORT).show();

创建自己的单例类,具有handlerLooperThread。创建一个类似showText(text, duration)的方法,在它内部创建一个可运行对象。

在它的run方法中,用你的文本创建一个Toast对象,然后post到handler。

循环线程将执行代码来查看处理程序是否为空,如果是则创建它。

这样,每次生成toast消息时,它将立即在UI上更新,而不是在队列中排队。

最后的结论是:Toast in Que不可阻挡。所以不要在que中使用toast

相关内容

  • 没有找到相关文章

最新更新