日常用到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(); }