私は地図を持っています:
publicMapビットマップ=newConcurrentHashMap();
次の方法でビットマップにデータを入力するリソースをデコードするための1つのスレッド。
ビットマップ.put(リソース、BitmapFactory.decodeStream(入力、null、オプション));
そして、デコードされたリソースをopenglテクスチャにバインドする2番目のネイティブスレッド:
public void onDrawFrame(GL10 gl) {{ if(bitmaps.size()> 0) {{
したがって、最初のスレッドはデコードし、2番目のスレッドはバインドします。このパターンは、Android 2.3.3、2.3.4、および4.xxで正常に機能しています。
しかし、android 2.3.5または2.3.6の場合、bitmaps.size()の2番目のスレッド(最初のスレッドに入力されたビットマップで動作する必要があります)は常に0を返しますが、同時に最初のスレッド(ビットマップに入力された)はより多くの数を返しますビットマップ.size()を呼び出すことにより0より大きくなります。
では、なぜこのバージョンのandroid osで、あるスレッドが他のスレッドに入力された要素を表示できないのでしょうか。