Android 7.0.2自定义Toast显示时间 使用Handler 第一次正常但第二次失败
时间: 2023-12-03 12:42:22 浏览: 221
这个问题可能是因为你在第二次使用Handler时没有将之前的消息删除掉导致的。在使用Handler时,如果你不及时删除之前的消息,它们可能会影响后续的处理。
你可以尝试在第二次调用Toast时,先使用Handler的removeCallbacks方法将之前的消息删除掉,然后再发送新的消息。具体代码如下:
```java
private static final int MSG_SHOW_TOAST = 1;
private Handler mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SHOW_TOAST:
showToast((String) msg.obj);
break;
default:
break;
}
}
};
private void showToastDelayed(final String text, final long delayMillis) {
mHandler.removeMessages(MSG_SHOW_TOAST);
mHandler.sendMessageDelayed(Message.obtain(mHandler, MSG_SHOW_TOAST, text), delayMillis);
}
private void showToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
```
在这个例子中,我们定义了一个常量`MSG_SHOW_TOAST`表示显示Toast的消息类型,然后在`showToastDelayed`方法中,先使用`removeMessages`方法删除之前的消息,然后再使用`sendMessageDelayed`方法发送新的消息。在`handleMessage`方法中,根据消息类型展示Toast。
这种方法可以确保每次只有最后一条消息会被处理,从而避免了多个Toast同时显示的问题。
阅读全文