日常用到Taost的机会很多,用就大家都会用,但是直接使用时,频繁点击Toast就会频繁出现,点击多少次就出现多少次,如果你不在页面的生命周期相应位置cancel掉Toast的话,即使退出了页面也是会继续弹出,非常烦人,也会显示出你的水平低下。
优化Toast的核心原理是,当生成一个Toast还没消失时,重复点击同样的一样Toast,不会再生成。下面来代码
public class ToastHelper { public static Toast mToast = null; /** * 弹出Toast * @param context 上下文对象 * @param text 提示的文本 * @param duration 持续时间(0:短;1:长) */ public static void showToast(Context context, String text, int duration) { if (mToast == null) { mToast = Toast.makeText(context, text, duration); } else { mToast.setText(text); mToast.setDuration(duration); } mToast.show(); } /** * * 弹出Toast * @param context 上下文对象 * @param text 提示的文本 * @param duration 持续时间(0:短;1:长) * @param gravity 位置(Gravity.CENTER;Gravity.TOP;...) */ public static void showToast(Context context, String text, int duration,int gravity) { if (mToast == null) { mToast = Toast.makeText(context, text, duration); } else { mToast.setText(text); mToast.setDuration(duration); } mToast.setGravity(gravity, 0, 0); mToast.show(); } /** * 关闭Toast */ public static void cancelToast(){ if(mToast !=null){ mToast.cancel(); } } }
下载时使用规则
ToastHelper.showToast(this, "您的输入为空!",0);//1是长,0是短
另外在Activity的生命周期内还可以根据需求优化一下,退出本页面时Toast被cancel掉
@Override protected void onDestroy() { super.onDestroy(); ToastHelper.cancelToast(); }