[以请求服务器数据为例]Android Message机制实现主线程、子线程数据传递

android Message 机制 的代码示例

主线程代码

private Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            if(msg.what == 0x200){ 	
                //主线程操作

            }
        }
 };

:msg.what 可以在创建message时自定义,用来区分message的类型

子线程代码:请求服务器数据为例

	  final FormBody body = bodyBuilder.add("classification","year/month/day").build();
      new Thread(new Runnable() {
      		@Override
      		public void run() {
         		 try {
            		//post 方式 进行数据请求
            		Response response = HttpUtil.doPost(url,body);
             		//获取响应中的JSON字符串
             		String str = response.body().string();
			 		recordList = JSONUtil.getRecordList(str);   /*解析JSON字符串,获得记录链表*/
					
					Message msg = Message.obtain();/*创建Message*/
            		msg.what = 0x200;           /*设定msg.what -> 消息类型*/
            		msg.obj = recordList;       /* msg.obj -> 消息携带的数据*/
            		handler.sendMessage(msg);   /*发送给主线程的handler 进行相应处理*/
        		} catch (IOException e) {
            		e.printStackTrace();
         		}
			}
		}).start();

在子线程的代码中,网络请求的代码跟主旨无关,暂且不管。Message机制中,子线程通过Message.obtain()的方法从MessagePool中获取一个消息对象,程序员可以对这个对象进行<what(消息类型) , obj(消息携带的数据)>的赋值,从而可以实现将数据从子线程传递到主线程。

主线程通过判断 msg.what 值的类型 在__主线程__中进行不同的操作。

好了,本次博客到此为止。希望大家能够学有所得!

另:转发或转载请注明出处,谢谢合作!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值