防止Toast重複提醒
原文地址:http://blog.csdn.net/guolin_blog/article/details/51336415
說到不會阻擋使用者原本正在進行的操作,這就延伸到我們今天的第二個主題,Toast。Toast只會彈出一段資訊,告訴使用者某某事情已經發生了,過一段時間後就會自動消失。它完全不會阻擋使用者的任何操作,甚至使用者也可以完全不用理會Toast。
那麼我們還是先來看一下Toast的基本用法吧,如下所示:
Toast.makeText(context, "things happened", Toast.LENGTH_SHORT).show();
最後一個引數用於指定Toast顯示的時長,Toast.LENGTH_SHORT表示顯示時間較短,Toast.LENGTH_LONG表示顯示時間較長。
不過也不是說Toast的用法就一點深度都沒有了,比如說上述的寫法就會存在如下圖所示的問題:
可以看到,這裡我快速連續點選了五次按鈕,Toast就觸發了五次。這樣的體驗其實是不好的,因為也許使用者是手抖了一下多點了幾次,導致Toast就長時間關閉不掉了。又或者我們其實已在進行其他操作了,應該彈出新的Toast提示,而上一個Toast卻還沒顯示結束。
因此,最佳的做法是將Toast的呼叫封裝成一個介面,寫在一個公共的類當中,如下所示:
public class Util {
private static Toast toast;
public static void showToast(Context context,
String content) {
if (toast == null) {
toast = Toast.makeText(context,
content,
Toast.LENGTH_SHORT);
} else {
toast.setText(content);
}
toast.show();
}
}
可以看到,這裡和我們平時使用Toast的方式並不一樣,這裡會先判斷Toast物件是否為空,如果是空的情況下才會呼叫makeText()方法來去生成一個Toast物件,否則就直接呼叫setText()方法來設定顯示的內容,最後再呼叫show()方法將Toast顯示出來。由於不會每次呼叫的時候都生成新的Toast物件,因此剛才我們遇到的問題在這裡就不會出現了。
呼叫的時候也很簡單,只需要把Context物件和Toast要顯示的內容傳進來就可以了:
Util.showToast(context, "things happened");
現在我們再重新執行一遍程式,效果如下圖所示:
相關文章
- Android 防止多次點選,Toast重複顯示AndroidAST
- js 防止重複提交方案JS
- PHP 防止表單重複提交PHP
- 前端如何防止介面重複提交前端
- WinForm MDIParent如何防止重複開啟ORM
- 防止指令碼重複執行方法指令碼
- 前端防止使用者重複提交-js前端JS
- 防止表單重複提交的程式碼
- 如何防止jQuery物件動畫重複執行jQuery物件動畫
- jquery防止重複提交程式碼例項jQuery
- MQ 如何防止訊息重複入隊MQ
- 華為遊戲登入多次重複提醒更新HMS Core遊戲
- PHP防止使用者重複提交表單PHP
- 防止表單重複提交的幾種策略
- MySQL防止重複插入相同記錄 insert if not existsMySql
- PHP防止表單重複提交的解決方法PHP
- beego有防止頁面重複提交的功能嗎Go
- 重新封裝一個iptables防止規則重複封裝
- 對於防止按鈕重複點選的嘗試
- 前臺防止表單重複提交的方法。Jquery、jsjQueryJS
- 防止重複提交與驗證控制元件配合使用控制元件
- SpringBoot如何防止重複提交?- Adrian AdendrataSpring Boot
- 關於如何防止重複簽到的技術探討
- 專案分享七:客戶端防止表單重複提交客戶端
- PHP透過session判斷防止表單重複提交例項PHPSession
- 如何使POST請求具有冪等性防止重複提交 - mscharhag
- vue帶參請求,登入時效(防止重複登陸)Vue
- Java使用Redis實現分散式鎖來防止重複提交問題JavaRedis分散式
- #每日一記#防止按鈕在短時間內重複點選
- 13-Jsp防止二次提交(重複提交) 時間戳JS時間戳
- Laravel 是怎樣防止你的定時任務重複執行的Laravel
- 防止表單提交按鈕重複點選現象程式碼例項
- 防止ajax請求重發
- iOS UIButton之防止重複點選(控制事件響應時間間隔)iOSUI事件
- 何為Redis單據鎖,你又是如何防止併發重複寫入的Redis
- 還在用 JS 做節流嗎?CSS 也可以防止按鈕重複點選JSCSS
- [轉載]防止JAVA程式重複啟動的一個另類解決辦法Java
- 利用SQL Server的全域性臨時表防止使用者重複登入 (轉)SQLServer