gpt4 book ai didi

android - 位图 decodeStream OutOfMemory 异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:55:54 25 4
gpt4 key购买 nike

我在我的应用程序中使用我自己的 Android ViewFlow 示例实现。我正在从网络服务下载加密图像,而不是将它们保存在 SD 卡上。我正在使用 viewflow 即时解密图像并显示它们。但问题是,当用户开始过快地更改图像时,它会向我抛出 OutOfMemoryException 并且我发现/测试的所有信息都不适用于我的情况。这是我正在使用的:

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.image_item, null);
}

try {
File bufferFile = new File(ids.get(position));
FileInputStream fis = new FileInputStream(bufferFile);

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec("01234567890abcde".getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec("fedcba9876543210".getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
CipherInputStream cis = new CipherInputStream(fis, cipher);

BitmapFactory.Options o = new BitmapFactory.Options();
final int REQUIRED_SIZE=300*1024;

//Find the correct scale value. It should be the power of 2.
int width_tmp= o.outWidth, height_tmp= o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale*=2;
}

//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;

Bitmap ops = BitmapFactory.decodeStream(cis,null,o2);
((ImageView) convertView.findViewById(R.id.imgView)).setImageBitmap(ops);
cis.close();
fis.close();

System.gc();

} catch (Exception e) {
e.printStackTrace();
((ImageView) convertView.findViewById(R.id.imgView)).setImageResource(R.drawable.image_unavailablee);
}

return convertView;
}

它仍然在线抛出异常:

((ImageView) convertView.findViewById(R.id.imgView)).setImageBitmap(ops);

除了这个异常(exception):

java.lang.OutOfMemoryError: bitmap size exceeds VM budget(Heap Size=6791KB, Allocated=3861KB, Bitmap Size=26006KB)

有什么解决办法吗?

最佳答案

仅供处理大型位图的任何人引用,有一篇文章展示了如何最好地处理此类问题以避免内存不足!

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

希望对您有所帮助!

关于android - 位图 decodeStream OutOfMemory 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com