背景:
最近項目中,正好做到登錄/注冊這個功能塊。它需要通過發送驗證碼,在規定的時間內用驗證碼來完成登錄/注冊。之前的項目中也有這個功能,但是覺得太復雜了,只好自己重新實現一遍。用Handler來做,覺得代碼簡介,邏輯也清楚。
代碼一:
//在向服務端發送獲取驗證碼成功的回調函數中,開始發消息:mHandler.obtainMessage();mHandler.sendEmptyMessage(MSG_CODE);//消息的處理: private static final int MSG_CODE = 0; private int limitTime = 121; private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if(msg.what==MSG_CODE){ limitTime--; if(limitTime>0){ mHandler.sendEmptyMessageDelayed(MSG_CODE,1000); mBtnVerify.setText("倒計時:"+limitTime+"s"); }else{ mBtnVerify.setText("獲取驗證碼"); } return true; } return false; } });代碼二:
//在向服務端發送獲取驗證碼成功的回調函數中,開始發消息:mHandler.post(myRunnale);//消息的處理: private int time = 11; private Handler mHandler = new Handler(); private Runnable myRunnale = new Runnable() { @Override public void run() { time--; if(time>0){ mHandler.postDelayed(myRunnale,1000); mTvChange.setText("剩余"+time+"s"); }else{ mTvChange.setText("完畢"); } } };從上述代碼中可以看出:使用Handler.post(Runnable) 是一個發布Messgae的便利方法。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答