Timer Task 와 Handler 지연 다 중 스 레 드

Timer Task 와 Handler 지연 다 중 스 레 드
Timer 와 Timer Task 는 하나의 지연 기 를 구축 할 수 있 습 니 다. 마치 하나의 스 레 드 를 열 고 정 해진 시간 마다 한 번 씩 방문 하 는 것 과 같 습 니 다.이 스 레 드 에서 이 Timer 와 Timer Task 를 닫 을 수 있 습 니 다. 예 를 들 어 지금 제 가 온라인 게임 계 정 로그 인 시간 초과 클 라 이언 트 의 검 측 을 하려 고 합 니 다. 사용자 가 계 정 비밀 번 호 를 입력 하고 로그 인 을 클릭 할 때 저 는 Timer Task 를 열 어서 1 초 마다 사용자 가 로그 인 했 는 지 확인 하고 10 초 후에 로그 인 에 성공 하지 못 하면 로그 인 시간 초과 알림 을 합 니 다.이 럴 때 저 는 이 검 측 스 레 드 에서 Timer 와 Timer Task 를 닫 아야 합 니 다.  순환 검사 가 필요 없 으 니까.cancel () 을 호출 하면 닫 을 수 있 습 니 다. 다음 예 를 읽 어 보 세 요.
 
:
    import java.util.Timer;  
    import java.util.TimerTask;  
    import android.app.Activity;  
    import android.content.Context;  
    import android.os.Bundle;  
    import android.os.Handler;  
    import android.os.Message;  
    import android.view.View;  
    import android.view.View.OnClickListener;  
    import android.widget.Button;  
    import android.widget.TextView;  
    public class TimerTaskActivity extends Activity {  
      
        /**  Timer  **/  
        public final static int LOAD_PROGRESS = 0;   
         
        /**  Timer  **/  
        public final static int CLOSE_PROGRESS = 1;   
         
        /**   TimerTask   **/  
        Button mButton0 = null;  
         
        /**   TimerTask   **/  
        Button mButton1 = null;  
         
        /**      **/  
        TextView mTextView = null;  
      
        Context mContext = null;  
      
        /**Timer  **/  
        Timer mTimer = null;  
         
        /**TimerTask  **/  
        TimerTask mTimerTask = null;  
         
        /**  TimerID**/  
        int mTimerID = 0;  
         
         
        /**         **/  
        Handler handler = new Handler() {  
        @Override  
        public void handleMessage(Message msg) {  
            switch (msg.what) {  
            case LOAD_PROGRESS:  
            mTextView.setText("  TimerID " + msg.arg1 );  
            break;  
            case CLOSE_PROGRESS:  
            mTextView.setText("  Timer         " );  
            break;  
              
            }  
            super.handleMessage(msg);  
        }  
        };  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
        setContentView(R.layout.timer);  
        mContext = this;  
      
        /**   button   TextView    **/  
        mButton0 = (Button) findViewById(R.id.button0);  
        mButton1 = (Button) findViewById(R.id.button1);  
        mTextView = (TextView) findViewById(R.id.textView0);  
        mTextView.setText("          ");  
         
        //    
        mButton0.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View arg0) {  
            //    timer  
            StartTimer();  
            }  
        });  
      
        //    
        mButton1.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View arg0) {  
            //    timer  
            CloseTimer();  
            }  
        });  
         
        super.onCreate(savedInstanceState);  
        }  
      
        public void StartTimer() {  
      
        if (mTimer == null) {  
            mTimerTask = new TimerTask() {  
            public void run() {  
                //mTimerTask mTimer        1        
                mTimerID ++;  
                Message msg = new Message();  
                msg.what = LOAD_PROGRESS;  
                msg.arg1 = (int) (mTimerID);  
                handler.sendMessage(msg);  
            }  
            };  
            mTimer = new Timer();  
            
            //         mTimerTask  
            //               1000    mTimerTask   1     
            //                1000   1     mTimerTask Run    
            mTimer.schedule(mTimerTask, 1000, 1000);  
        }  
      
        }  
      
        public void CloseTimer() {  
      
        //     mTimer   mTimerTask  
        if (mTimer != null) {  
            mTimer.cancel();  
            mTimer = null;  
        }  
        if (mTimerTask != null) {  
            mTimerTask = null;  
        }  
         
        /**ID  **/  
        mTimerID = 0;  
         
        //        what      
        handler.sendEmptyMessage(CLOSE_PROGRESS);  
        }  
    }  

 

좋은 웹페이지 즐겨찾기