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

posted @ 2016-08-17 16:57  iFat  阅读(1057)  评论(0编辑  收藏  举报