问bitmap和byteBuffer的多线程处理问题;

logohoo 2019-03-18 12:09:26

1.线程一把bitmap COPY到 byteBuffer
bitmap.copyPixelsFromBuffer(byteBuffer);
2.线程二把byteBuffer COPY 到bitmap
bitmap.copyPixelsToBuffer(byteBuffer);
这样造成了byteBuffer.position的问题,使用了volatile无法解决问题。求办法,可加分数。

说明:byteBuffer是公共变量,由于bitmap每次都是更新的,就是想获取bitmap的每次更新数据,在线程一获取到bitmap后把其转成了byteBuffer然后马上recycle它,byteBuffer留给线程2使用。
...全文
554 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
logohoo 2019-04-10
  • 打赏
  • 举报
回复
谢谢了额。。。。。
王能 2019-03-19
  • 打赏
  • 举报
回复
copy之前调用Buffer.clear()即可。 但是依你的描述:线程1得到了一个bitmap,然后copy,然后给线程二使用。我现在的问题就是为什么要copy而不是直接保存bitmap,虽然bitmap很浪费内存,但转成buffer不还是一样大的内存,还多做了一步copy
王能 2019-03-19
  • 打赏
  • 举报
回复
那就是copy之前byteBuffer.clear()
logohoo 2019-03-19
  • 打赏
  • 举报
回复
因为在创建一个bitmap大概10MS,在使用也10M,假如两个进程都同时一个写,一个用,那么bitmap就会出现问题啊。我就想copy一个公共,给其它线程公共使用啊。就是如果把bitmap公共使用,就会冲突啊。
王能 2019-03-18
  • 打赏
  • 举报
回复
为什么不保存bitmap呢?这样做不是更浪费内存吗?
logohoo 2019-03-18
  • 打赏
  • 举报
回复
因为实时性很重要啊,保存后再恢复bitmap很耗时啊。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧