android Toast只显示一次

Toast在连续弹出显示时,只会显示第一次,后面要显示需要Toast.cancel()

public class ToastUtil {
    private static Toast mToast;
    private static Handler mHandler = new Handler(Looper.getMainLooper());
    private final static String THREAD_MAIN = "main";

    /**
     * 显示toast(可以子线程中使用Toast)-short
     *
     * @param msg Toast消息
     */
    @SuppressLint("ShowToast")
    public static void showShortToast(String msg) {
        try {
            // 判断是在子线程,还是主线程
            if (THREAD_MAIN.equals(Thread.currentThread().getName())) {
                if (mToast == null) {
                    mToast = Toast.makeText(ContextApp.app(), msg, Toast.LENGTH_SHORT);
                } else {
                    mToast.cancel();
                    mToast = Toast.makeText(ContextApp.app(), msg, Toast.LENGTH_SHORT);
                    mToast.setText(msg);
                }
                mToast.show();
            } else {
                // 子线程
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(ContextApp.app(), msg, Toast.LENGTH_SHORT).show();
                    }
                });
            }
        } catch (WindowManager.BadTokenException e) {
            e.printStackTrace();
            CrashHandler.postCatchedException(e);
            //android API25系统BUG,TOAST异常
        }

    }

    /**
     * 显示toast(可以子线程中使用Toast)-short
     *
     * @param msg Toast消息
     */
    @SuppressLint("ShowToast")
    public static void showLongToast(String msg) {
        try {
            // 判断是在子线程,还是主线程
            if (THREAD_MAIN.equals(Thread.currentThread().getName())) {
                if (mToast == null) {
                    mToast = Toast.makeText(ContextApp.app(), msg, Toast.LENGTH_LONG);
                } else {
                    mToast.cancel();
                    mToast = Toast.makeText(ContextApp.app(), msg, Toast.LENGTH_LONG);
                    mToast.setText(msg);
                }
                mToast.show();
            } else {
                // 子线程
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(ContextApp.app(), msg, Toast.LENGTH_LONG).show();
                    }
                });
            }
        } catch (WindowManager.BadTokenException e) {
            e.printStackTrace();
            CrashHandler.postCatchedException(e);
            //android API25系统BUG,TOAST异常
        }

    }
}

猜你喜欢

转载自blog.csdn.net/jerry872235631/article/details/106550515