android中的handler例

馬達每隔1S振動一次,共5次爲例:
/***************************************************************/
private Vibrator mVibrator = null;
    private  Handler mHandler = new Handler();
    private Runnable callback() {
                    return new Runnable() {
                    public void run() {
                        System.out.println("callback");
                        Log.d("ma da","callback");
                        mVibrator = new Vibrator();
                        mVibrator.vibrate(1000);                        
                    }
                    };
        }

public void motor()
        {           
                
            mHandler.postDelayed(callback(), 0);        
            mHandler.postDelayed(callback(), 2000);          
            mHandler.postDelayed(callback(), 4000);         
            mHandler.postDelayed(callback(), 6000);     
            mHandler.postDelayed(callback(), 8000);
        }


/***************************************************************/


用handleMessage方法:
/**************************************

 private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case KILLER:
                    if (mKillerCallback != null) 
                    {
                        mKillerCallback.onKilled();
                    }
                    break;
                case PLAY:
                    play((Context) msg.obj, msg.arg1);
                    break;
            }
        }
    };
    private void disableKiller() {
        mHandler.removeMessages(KILLER);
    }
    public void postPlay(final Context context, final int alarmId) {
        mHandler.sendMessage(mHandler.obtainMessage(PLAY, alarmId, 0, context));
        //mHandler.sendMessageDelayed(msg, delayMillis)
    }
    
    private void enableKiller() {
        mHandler.sendMessageDelayed(mHandler.obtainMessage(KILLER),
                1000 * ALARM_TIMEOUT_SECONDS);
    }



/**************

private Handler handler = new Handler(){  

private static final int Vibrator_CALLBACK = 1;
    public void handleMessage(Message msg) {  
        switch (msg.what) {      
           case Vibrator_CALLBACK:    
        Vibrator mVibrator = new Vibrator();
               mVibrator.vibrate(1000);
               break;      
            }      
           super.handleMessage(msg);  
         }    
     };  


 TimerTask task = new TimerTask(){  
      public void run() {  
    Message message = new Message();      
     message.what = Vibrator_CALLBACK;      
     handler.sendMessage(message);    
  }  
 };  


timer = new Timer(true);
 timer.schedule(task,1000, 1000); //延時1000ms後執行,1000ms執行一次
timer.cancel(); //退出計時器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章