對於同一條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;
}
}