zoukankan      html  css  js  c++  java
  • handle中传递对象

        最近在做项目中遇到了一个怪事,我解析了一些数据,将这些数据保存到了对象中,而对象实现了序列化接口。然后将这里数据用Arraylist保存并且通过handler传递出去,我是一部分一部分的往外传递的,在传递完成一部分之后就将Arraylist里面的数据给clear了,结果发现handler那边接受的的数据为空。但是当我数据量比较大的时候使用这个方法就不存在这个问题。

       后来改用了将数据克隆出来然后传递出去就没问题了,因为保存对象的数据是经过序列化了的,用handler传递的数据的时候传递的只是他的内存地址,传递数据和接收数据对象其实是共享内存地址的,当我使用handler.sendMessage(message)方法之后立马调用Arraylist.clear()的时候数据被我立马清空了,handler那边还没来得及处理,就会造成handler接受的数据是空的现象。那又为什么会出现当我数据量比较大的时候使用这样的方法会没有问题呢?据猜测这个地方可能是由于线程不同步造成的。

       android 通过handler传递对象:

    Bundle bundle=new Bundle();
    bundle.putInt(
    "id", 10);
    bundle.putSerializable(
    "list",(ArrayList<Entity>)obj);//注意这里的Entity必须是实现了序列化接口的对象
    Message message
    =handler.obtainMessage(1, bundle);
    handler.sendMessage(message);

      handler中接受数据:

    Bundle bundle2=(Bundle) msg.obj;
    ArrayList
    <Entity> list2=(ArrayList<Entity>) bundle2.get("list");
  • 相关阅读:
    PTA 7-9 空心字母金字塔 (10分)【待优化】
    PTA 7-12 交换最小值和最大值 (15分)
    PTA 7-8 分队列 (10分)
    PTA 7-6 计算阶乘和 (10分)
    PTA 7-5 得分计算器 (20分)
    PTA 7-4 有重复的数据 (10分)
    PTA 7-1 数组元素循环右移问题 (20分)
    PTA 7-1 换硬币 (20分)
    PTA 7-6 又来一个上三角数字三角形 (10分)【待完善】
    PTA 7-5 画菱形 (10分)
  • 原文地址:https://www.cnblogs.com/tanlon/p/2108387.html
Copyright © 2011-2022 走看看