0

イメージビューをSDカードの画像に設定しています。これは、Androidエミュレーター4.1ではスムーズに実行されますが、Androidバージョン2.2のエミュレーターでは、失敗したバインダートランザクションが返されます。私はこれが非常に奇妙で、問題が何であるかを理解することができません。画像画像は次のように設定されます。

               try{
                    String pathName = Environment.getExternalStorageDirectory().getPath() + "/Drop Insight/" + c.getString(iID) + ".png";
                    File path = new File(pathName);
                    if(path.exists()){
                        BitmapFactory.Options options = new BitmapFactory.Options();
                        Bitmap bm = BitmapFactory.decodeFile(pathName, options);
                        remoteView.setImageViewBitmap(R.id.ivwidgetimage, bm);
                    }
                    else{
                        remoteView.setImageViewResource(R.id.ivwidgetimage, R.drawable.defaultpic);
                    }
                }
                catch (Exception e) {
                    Log.e(DEBUG_TAG, "Failed", e);
                }

私はすでにoptions.inSampleSize=4を試しました。しかし、それは問題を解決しませんでした。

説明と助けてくれてありがとう。

11-25 19:22:04.992: D/dalvikvm(59): GC_EXPLICIT freed 3148 objects / 171272 bytes in 107ms
11-25 19:22:05.092: V/MediaProvider(216): /mnt/sdcard volume ID: 318247957
11-25 19:22:05.201: D/dalvikvm(282): GC_EXTERNAL_ALLOC freed 989 objects / 66344 bytes in 59ms
11-25 19:22:05.391: E/JavaBinder(59): !!! FAILED BINDER TRANSACTION !!!
11-25 19:22:05.401: D/dalvikvm(153): GC_EXPLICIT freed 4139 objects / 251136 bytes in 1278ms
4

1 に答える 1

0

あなたのようなコードの場合、これは通常、ビットマップが大きすぎることを意味します。バインダーベースのIPCトランザクションごとに1MBに制限されています。この制限がAndroid4.xで引き上げられたことはわかりませんが、それは確かに可能です。

したがって、それがsetImageViewBitmap()十分に小さいものを使用していることを確認してBitmapください。

于 2012-11-25T18:43:02.600 に答える