android 如何在线程缓存实体类

来源:互联网 发布:红外图像处理算法 编辑:程序博客网 时间:2024/06/05 20:20

今天,简单讲讲在线程里把数据缓存起来。

如果在线程里有一些类变量,在run的代码里循环给这些变量赋值,然后缓存在一个list链表里,最后变量链表会发现数据有的不对。


原因很简单,对于基本数据类型,可以直接在变量里赋值,而对于byte[],实体类等,则必须开辟存贮空间,不能直接赋值,因为对象和数组使用等于赋值实际上只是把对象或数组的引用赋值给了实体类的变量,当对象或数组发生改变时,实体类的数据会随之改变。

具体的代码很简单,在赋值时注意就可以。


public P2PNewDev.P2PVO p2PVO;public RealMediaHeader m_header;public byte[] pAVData;public int nAVDataSize;public VideoNode(P2PNewDev.P2PVO p2PVO, RealMediaHeader m_header, byte[] pAVData, int nAVDataSize) {    this.p2PVO = p2PVO;    this.m_header=new RealMediaHeader(m_header.getSync_code(),m_header.getFrametype()            ,m_header.getFrameno(),m_header.getChannel(),m_header.getStream_id(),m_header.getCodec_id(),m_header.getTv_sec(),m_header.getTv_msec(),m_header.getResevered(),m_header.getMedia_length());    this.pAVData=new byte[nAVDataSize];    System.arraycopy(pAVData, 0, this.pAVData, 0, nAVDataSize);    this.nAVDataSize = nAVDataSize;}



这里面当传递的实体类RealMediaHeader和byte[]时,都是新开辟存贮空间然后把值复制过来。


android 如何在线程缓存实体类就讲完了。


就这么简单。


原创粉丝点击