Handler가 카운트다운을 실현하는 두 가지 방식

배경:


최근 프로젝트에서 이 기능 블록을 로그인/등록하기에 딱 알맞다.인증코드를 전송하여 지정된 시간 내에 인증코드로 로그인/등록을 완료해야 합니다.이전 프로젝트에서도 이 기능이 있었지만 너무 복잡해서 스스로 다시 한 번 실현할 수밖에 없었다.핸들러로 하면 코드 프로필도 논리적으로 잘 알 것 같아요.

코드 1:

//                    ,     :
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{
                    limitTime =121;//   limitTime   ,       
                    mBtnVerify.setText("     ");
                }
                return true;
            }
            return  false;
        }
    });

코드 2:



//                    ,     :
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는 Messgae를 쉽게 게시할 수 있는 방법입니다.

좋은 웹페이지 즐겨찾기