我正在从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
答案 0 :(得分:0)
对于像你这样的代码,这通常意味着位图太大了。每个基于Binder的IPC交易限制为1MB。我不知道这个限制是在Android 4.x中提出的,尽管这肯定是可能的。
因此,请确保setImageViewBitmap()
使用足够小的Bitmap
。