Android避免弹出大量Toast,长时间不消失,兼容Android9.0

解决Android 中Toast大量弹出,显示框长时间不消失问题

通常我们会遇到需要弹出多个Toast的场景,由于Toast的显示逻辑是 等上一个Toast显示结束后,才会显示下一个,因此,当我们有多个Toast要显示的时候,就会造成Toast显示界面长时间不消失的问题;其实我们可以将Toast进行简单封装就可以解决这个问题。

封装后的Toast工具类如下:

 

public class ShowToastUtils {

    private static Toast mToast;

    public static void showToast(Context mContext, String text, int duration) {
        //Android9.0系统已处理,没有该问题,Android10.0又改回9.0以前的实现
        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P || mToast == null) {
            mToast = Toast.makeText(mContext, text, duration);
        } else {
            mToast.setText(text);
            mToast.setDuration(duration);
        }
        mToast.show();
    }

    public static void showToast(Context mContext, int resId, int duration) {
        showToast(mContext, mContext.getResources().getString(resId), duration);
    }
}

代码非常简单,就不做过多的解释了,但是在Android9.0有例外,当前Toast还未消失时弹出下一个Toast,会导致当前Toast消失,并且下一个Toast也不会显示,之后短时间内弹出的Toast也不会显示,具体原因看源码分析:Android 9.0 Toast源码改变引发的问题

其调用方法也非常简单,参数和Toast.makeText()的相同,例子如下:

ShowToastUtils.showToast(context, R.string.toast111, Toast.LENGTH_LONG);

 

或者

 

ShowToastUtils.showToast(context, "hello", Toast.LENGTH_LONG);

 

 

       欢迎  扫一扫  下方二维码

   关注我的公众号 阅读更多文章

       

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值