重複出現大量同一條Toast的解決辦法

對於同一條Toast的觸發條件,如果用戶快速觸發,就會出現大量Toast這一條信息的情況,即使退出也不會停止
解決辦法看了就會明白:

/**
     * 提示信息
     * 
     * @param context
     * @param msgId
     */
    public static void showMsg(Context context, int msgId) {
        String msg = context.getResources().getString(msgId);
        showMsg(context, msg);

    }

     private static String oldMsg;  
     private static long time;  

    /**
     * Toast一條信息
     * 
     * @param context
     * @param msg
     */
    public static void showMsg(Context context, String msg) {
        if (!TextUtils.isEmpty(msg)) {
            if (msg.contains("SocketException")
                    || msg.contains("ConnectException")) {
                msg = "網絡連接錯誤";
            } else if (msg.contains("TimeoutException")) {
                msg = "連接超時";
            } else if (msg.contains("!DOCTYPE")) {
                msg = "服務器錯誤";
            } else if (msg.contains("Server") || msg.contains("subscribe")
                    || msg.contains("Exception")) {
                return;
            }


             if (!msg.equals(oldMsg)) { // 當顯示的內容不一樣時,即斷定爲不是同一個Toast  
                    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();  
                    time = System.currentTimeMillis();  
                } else {  
                    // 顯示內容一樣時,只有間隔時間大於2秒時才顯示  
                    if (System.currentTimeMillis() - time > 2000) {  
                        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();  
                        time = System.currentTimeMillis();  
                    }  
                }  
                oldMsg = msg;
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章