Handler 메시지 보내기 요약

1640 단어
4
  • obtain Message()는 하나의 Message 대상을 얻었습니다

  • 메시지를 작성하여 보내려면 다음과 같이 하십시오.
       Message msg = new Message();
        msg.arg1 = 1;
        msg.arg2 = 2;
        msg.what = 3;
        msg.obj = Object;
       handler.sendMessage(msg);
    

    성능 최적화 후
       Message msg = handler.obtainMessage();
        msg.arg1 = 1;
        msg.arg2 = 2;
        msg.what = 3;
        msg.obj = Object;
       handler.sendMessage(msg);
    

    다음과 같습니다.
       Message msg = handler.obtainMessage(int what,int arg1, int arg2, Object obj ) 
    handler.sendMessage(msg);
    

    좀 더 세련되게 (이 코드는 생성된 메시지에 두 개의 인자만 전송되고handler로 하여금 10ms로 메시지를 보내는 것을 지연시킨다).
     handler.sendMessageDelayed(handler.obtainMessage(int what,Object obj), 10);
    

    메시지를 받는 방법은 다음과 같습니다.
    Handler handler = new Handler(){
        public void handleMessage(Message msg) {
        super.handleMessage(msg);
        // Message   msg.what   msg.arg1  msg.arg2  msg.obj
        // msg.obj 
        }           
    };
    

    실례를 보여 주다.
    public boolean onTouch(View view, MotionEvent event){
        if(event.getAction() == MotionEvent.ACTION_UP) {
            handler.sendMessageDelayed(handler.obtainMessage(TOUCH_EVENT_ID,view), 10);
        }
        return false;
    }
    
            Handler handler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    //msg.obj View ( obj View )
                    View scroller = (View)msg.obj;
                    if(msg.what==TOUCH_EVENT_ID) {
                        ......
                    }
                }
            };

    좋은 웹페이지 즐겨찾기