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);
                
                        }

  • 相关阅读:
    Java多线程学习(吐血超具体总结)
    java.lang.Integer can not be cast to java.lang.Long
    【转】随身HiFi 安卓OTG功能在音频上的妙用
    【转】锋狂百科:手机也能接外设 OTG技术详解
    【转】用串口登录Beaglebone Black、用usb共享电脑网络、内核模块的本地编译
    【转】Beagleboard:BeagleBoneBlack
    【转】
    【转】Beaglebone Black
    【转】你应该知道的 10 个 VirtualBox 技巧与高级特性
    如何把SKYPE的发送消息由enter改为ctrl+enter?
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/5780720.html
Copyright © 2011-2022 走看看