我有地图:
public Map bitmaps = new ConcurrentHashMap();
一个用于解码资源的线程,通过以下方式填充位图:
bitmaps.put (resource, BitmapFactory.decodeStream (input, null, options));
第二个本机线程将解码的资源绑定到 opengl 纹理:
公共无效 onDrawFrame (GL10 gl) { 如果(位图大小()> 0) {
所以第一个线程解码和第二个线程绑定。这种模式在 android 2.3.3、2.3.4 和 4.xx 上运行良好。
但是对于 android 2.3.5 或 2.3.6 ,bitmaps.size() 中的第二个线程(必须与第一个线程的填充位图一起使用)总是返回 0,而第一个线程(填充位图)同时返回更多通过调用 bitmaps.size() 大于 0。
那么为什么在这个版本的 android os 中一个线程看不到其他线程填充的元素呢?