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异常        }    }}

 

更多相关文章

  1. 浅析Android中的消息机制-解决:Only the original thread that cr
  2. Android异步消息机制之Handler
  3. Android的Handler机制详解3_Looper.looper()不会卡死主线程
  4. Android(安卓)P SystemUI之StatusBar UI布局status_bar.xml解析
  5. android用户界面-组件Widget-地图视图MapView
  6. Android之Handler用法总结
  7. Android中使Dialog显示时背景不变暗
  8. Android开发之消息处理机制(一)——Handler
  9. Android异步加载图像小结 (含线程池,缓存方法)

随机推荐

  1. android开发新浪微博客户端 完整攻略 [新
  2. Android(安卓)Camera应用初探一
  3. 64位Ubuntu配置android环境报错(...adb":
  4. HandlerThread的使用
  5. Android开发之新建项目
  6. Android(安卓)EditView用法小结
  7. 2011.09.13(3)——— android 添加快捷方式
  8. Android获取本机蓝牙地址
  9. Error:Android(安卓)Source Generator: C
  10. Android设置透明、半透明等效果