zoukankan      html  css  js  c++  java
  • Handler消息机制的写法

       使用Handler的步骤:

            1.主线程中创建一个Handler
            private Handler handler = new Handler(){
                    public void handleMessage(android.os.Message msg) {
            
                    };
            };

            2.重写handler的handlermessage方法

            3.子线程中创建一个Message对象,将获取的数据绑定给msg
                    Message msg = new Message();
                    //另一种方式:Message msg = Messge.obtain;
                    msg.obj = result;
            4.主线程中的handler对象在子线程中将message发送给主线程
                    handler.sendMessage(msg);
            
            5.主线程中handlermessage方法接受子线程发来的数据,就可以做更新UI的操作。
                    
                
        主线程
            
        //☆☆☆1.在主线程中创建一个Handler对象
        private Handler handler = new Handler(){
            //☆☆☆2.重写handler的handlermessage方法,用来接收子线程中发来的消息
            public void handleMessage(android.os.Message msg) {
                //☆☆☆5.接收子线程发送的数据,处理数据。
                Bitmap bitmap  = (Bitmap) msg.obj;
                //☆☆☆6.当前方法属于主线程可以做UI的更新
                //五.获取服务器返回的内容,显示到textview上
                img_pic.setImageBitmap(bitmap);//设置ImageView的图片内容
            };
        };
        
        子线程

                if(code == 200){
                    //5.获取有效数据,并将获取的流数据解析成String
                            InputStream inputStream = connection.getInputStream();
                            
                            //将一个读取流转换成一个图片 Drawable , Btimap:位图  ?????
                            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                            
                            
                            //☆☆☆3.子线中创建一个Message对象,为了携带子线程中获取的数据给主线程。
                            Message msg = Message.obtain();//获取一个Message对象,内部实现是:如果之前的Message存在直接返回,不存在创建新的Message返回
                            msg.obj = bitmap;//将获取的数据封装到msg中。
                            //☆☆☆4.使用handler对象将message发送到主线程。
                            handler.sendMessage(msg);
                
                        }

  • 相关阅读:
    DeepIn系统使用和相关软件安装
    在JDK11中生成JRE11的方法
    IIS 7 中设置文件上传大小的方法
    在服务器上发布MVC5的应用
    安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?
    配置putty或SecureCRT防止SSH连接中断
    借助FRP反向代理实现内网穿透
    你不知道的hostname命令
    Perl脚本通过Expect登陆多台设备批量执行命令并Log
    Linux内核参数配置
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/5780720.html
Copyright © 2011-2022 走看看