Androidメッセージメカニズムの4---Looper,Handler,Message例


Android      ---Looper,Handler,Message

                   Message,Handler,Looper      。
        Looper  ;
public class LooperThread extends Thread{

    public LooperThread(){

    }

    @Override
    public void run() {
        //         Looper  
        Looper.prepare();
        /*
              ,    Handler(  MessageQueue)
         */
        Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what){
                    case 0:
                        System.out.println("Looper Thread:" + msg.arg1);
                        break;
                }
            }
        };
        new Thread(new WorkThread(handler)).start();
        //        
        Looper.loop();
    }
}

Workスレッドの作成
public class WorkThread implements Runnable{

    private Handler handler = null;

    public WorkThread(Handler handler){
        this.handler = handler;
        System.out.println("work thread start");
    }

    @Override
    public void run() {
        for(int i = 0; i < 20; i++){
            if(i % 2 == 0){
//                Message msg = Message.obtain();
//                msg.what = 0;
//                msg.arg1 = i;
                Message msg = Message.obtain(handler, 0, i, 0);
                handler.sendMessage(msg);
            } else{
                System.out.println("Work Thread:" + i);
            }

        }
    }

}