1. 程式人生 > >防止onclick事件多次呼叫

防止onclick事件多次呼叫

        //程式碼3
        submitButton.setOnClickListener(new NoDoubleClickListener() {
            @Override
            public void onNoDoubleClick(View v) {
                submitOrder();
            }
        }); 

原理:

很簡單,見程式碼…… 
就是用onNoDoubleClick代替onClick處理具體的操作,在onClick方法中加一個判斷:在接收到點選事件之後,先判斷一下時間,如果距離上次處理操作不足MIN_CLICK_DELAY_TIME,就忽視——即能防止誤操作的連續點選導致重複事件。

MIN_CLICK_DELAY_TIME可調。

優勢

好處是不用改變原有程式碼的邏輯,就只需要兩個替換:NoDoubleClickListener代替OnClickListener,onNoDoubleClick代替onClick。 程式碼的結構等都不需要做改變(**對比上面的程式碼0跟程式碼**3),不需要關心處理更改button的狀態這些額外判斷邏輯,只需要關注業務邏輯即可,簡潔優雅~


相關推薦

防止onclick事件呼叫

//程式碼3 submitButton.setOnClickListener(new NoDoubleClickListener() { @Override public void onNoDoubleClick(View v)

jquery on()事件呼叫解決辦法

今天閒的沒事 寫了個時時監控input框的元件,在用on() 方法進行繫結change事件時發現出現多次呼叫的情況。 現在說說自己的解決方法,和大家分享一下: var validators = function() { $(document).on("cha

防止使用者連續擊鍵,呼叫ajax時,即防抖的封裝

在文字框中常常有這樣的需求,鍵入值時,實時呼叫相應的介面,但是每次觸發keydown都觸發,會嚴重消耗網頁的效能 基於此,可以進行封裝,設定鍵入值得間隔在一秒之內只調用一次,程式碼如下 呼叫如下 $("input").on("keydown",debounce(fu

iOS 如何防止呼叫didUpdateLocations方法

原貼 http://www.aichengxu.com/diannao/72340.htm1:判斷didUpdateLocations這個方法呼叫幾次 _currLocationl = [locations lastObject]; NSString *loc=[NSSt

防止快速點選調節音量按鈕呼叫網路介面

private Runnable reqeustSetVoice; public void setDeviceVoice(final int count, BindBean bean, ImageButton deviceVoice) {

C#中WebBrowser.DocumentCompleted事件調用問題解決方法

post lin ont display err 框架 center 一個 blank 關於DocumentCompleted事件,MSDN給出的解釋是在文檔加載完畢後執行,但是在我的程序中DocumentCompleted卻被多次調用,查了一下資料,大概出現了以下幾種情

JQ事件委托導致點擊事件執行問題

func 中一 頁面切換 後來 ech cli 程序 處理程序 clas 起因:最近寫網頁其中一個模塊使用tab切換~每一個tab裏都有點擊按鈕提交事件,剛開始點擊提交只執行一次,但是只要我tab切換頁面又切換回來該頁面,再點擊該按鈕,我切換了多少次頁面,代碼提交也會提交很

jQuery事件繫結與解綁

jQuery事件繫結很常見,相信大家經常會用到click、focus、blur等事件,但是如果對控制元件的某個事件繫結多個方法會是怎樣的結果呢,覆蓋、累加、或其他效果?今天我就來驗證一下這個疑問並說說如何解綁。 一、jQuery事件多次繫結 <head> <sc

在vue中呼叫同一個定義全域性變數的例項

在Vue開發中,有很多場景會用到多次重複的API請求。 例如: 前端精品教程:百度網盤下載 ? 1

防止表單提交的方法

作者:莎士比亞的人生 來源:CSDN 原文:https://blog.csdn.net/qq_34368762/article/details/79130198  表單重複提交是在多使用者Web應用中最常見、帶來很多麻煩的一個問題。有很多的應用場景都會遇到重複提交問題,比如:

用面向物件重寫thread 實現呼叫一個執行緒

思路:   利用thread類中,run方法在子執行緒中呼叫,其他方法在主執行緒呼叫,所以將生產者寫入主執行緒,將消費者寫入run函式中在子執行緒中執行,完成生產者消費者模型 注意:   1.  要在 init 函式中例項化一個Queue佇列作為生產者消費者中介   2.  要在 init 函式中把d

微信小程式中動畫呼叫的問題

function hideMsg(that) { var animation = wx.createAnimation({ duration: 1500, timingFunction: 'linear', }) that.animation = animation

【記坑】Iterator遍歷時,呼叫next(),二遍歷需要從Collection重新獲取迭代器

【記坑】Iterator遍歷時,多次呼叫next(),二次遍歷需要從Collection重新獲取迭代器 2018年02月10日 11:02:46 閱讀數:681 業務需求,從一份excel表中取到X軸(專案)和Y軸(平臺)的資料,和資料庫中的資料進行比較,如果匹配不上,則把所有匹配不上的

呼叫同一非同步方法體會出現使用相同的屬性值問題

《一》執行同一個方法體,裡面有非同步的邏輯程式碼,如果這個非同步請求還沒有執行完畢時,我們又對它進行了第二次呼叫,它會使用最後一次的執行操作。例如:   var test = {   init:function(){ this.temp = "temp" +

驗證:呼叫WSAStartup會發生什麼?

有時候,總想驗證一些奇怪的想法,乾脆就寫下來,以備後查。 想法:多次呼叫WSAStartup會發生什麼? void TestCase_WSAStartupAndCleanup() { WORD versionRequested1_1, versionRequested2

JQuery的on事件觸發問題

JQuery的on事件多次觸發問題 問題描述: 程式碼如下: <!-- 結構 --> <div class="content"> <div id='result'></div> <div id="mask

呼叫Promise的then會返回什麼?

//做飯 function cook(){ console.log('開始做飯。'); var p = new Promise(function(resolve, reject){ //做一些非同步操作 setTimeout(function(){

fragment複用至EventBus呼叫

專案是mvp模式開發的,中間有一個tablayout,每個標籤都是fragment複用,通過model請求不同資料展示,發現一個問題,多次滑動之後,每個fragment最後都顯示同一個內容,看起來好像fragment複用有問題,每次取得是同一個fragment。

前端防止按鈕被點選

前端的部分邏輯有時候控制前端的顯示,比如記錄收藏數目等等。有時候多次重複點選會造成前端顯示的bug。所以需要有部分邏輯判斷去篩除掉重複多次的點選。 實現部分程式碼如下,主要是通過setTimeout去加以判斷,即無論點選幾次,間隔一定時間才會去觸發一次事件,從而只產生一次的

MUI on繫結事件執行問題

1.可能是同時引用mui.js與mui.min.js; 2.可能多次註冊了on事件,解決方法如下: //繫結前先登出事件 mui("li").off("tap"); //繫結事件 mui("li")