下面的代码显示了我当前的实现,这里是创建一个Toast对象并在onPause()中关闭。直到没有敬酒队列为止,这都可以正常工作。

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更新并重新显示。然后取消操作按预期工作,因为只有一个实例要取消。

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

09-26 14:01