• Handler


    一、work线程向main线程发送数据(work线程发数据,main线程处理数据

    public class MainActivity extends Activity {
       
        private Button button;
        private TextView textView;
        private Handler handler;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button = (Button)this.findViewById(R.id.button1);
            textView = (TextView)this.findViewById(R.id.textView1);
    handler
    = new MyHandler(); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { new Thread(){ @Override public void run() { super.run(); Thread.currentThread().getName();//获取当前线程的名字 Message msg = Message.obtain(); String s = "hello handler"; msg.obj = s; handler.sendMessage(msg); } }.start(); } }); } public class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); String s = (String)msg.obj; textView.setText(s); } } }

     二、main线程向work线程发送数据(main线程发数据,work线程处理数据

    public class MainActivity extends Activity {
    
        private Button button;
        private TextView textView;
        private Handler handler;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button = (Button)this.findViewById(R.id.button);
            textView = (TextView)this.findViewById(R.id.textview);
            
            button.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    Message msg = Message.obtain();
                    msg.obj = "handler2";
                    handler.sendMessage(msg);
                }
            });
            new Thread(){
    
                @Override
                public void run() {
                    super.run();
                    Looper.prepare();//第一步
                    handler = new Handler(){//第二步
                        @Override
                        public void handleMessage(Message msg) {
                            super.handleMessage(msg);
                            String s = (String) msg.obj;
                            System.out.println(s);        
                        }
                        
                        
                    };
                    Looper.loop();//第三步
                }
            }.start();    
            
        }
    }

    三、Handler、Looper、MessageQueue的工作原理 

    handler可以在任意线程发送消息

    一个线程可以有多个Handler,但是只能有一个Looper!

  • 相关阅读:
    微信客服系统开发SDK使用教程-给好友发消息任务
    微信客服系统开发SDK使用教程-客户端选择微信号登陆/登出通知
    微信客服系统开发SDK使用教程-客户端退出通知
    php优秀框架codeigniter学习系列——CI_Security类学习
    php优秀框架codeigniter学习系列——CI_Output类的学习
    php优秀框架codeigniter学习系列——CI_Router类学习
    My IELTS result has come out 我的雅思成绩出来了
    Travel notes in Vietnam
    asp.net学习
    makefile简单学习
  • 原文地址:https://www.cnblogs.com/stallran/p/3739825.html
Copyright © 2020-2023  润新知