【发布时间】:2010-06-14 05:07:04
【问题描述】:
我正在尝试制作一个应用程序,该应用程序还可以让用户选择他想要设置的壁纸。我通过调用 Gallery Intent 来解决这个问题。一旦用户选择了特定的图像,图像的数据路径就会返回给我,然后我通过将图像设置到 imageview 上来预览给用户。
当图像大小(和/或分辨率)大于 android 的预期时,问题就会出现。这导致我的模块失败。
如果这还不够,当用户尝试选择其他壁纸时(在我的测试案例中,“其他”壁纸的大小也是 >700kb)然后应用程序因“OutOfMemoryException”而崩溃......
各位帮帮我!!!
对于我使用的画廊意图:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_IMAGE);
设置我使用的壁纸:
InputStream is = getContentResolver().openInputStream(Uri.parse(uri_returned_from_intent));
Bitmap bgImage = BitmapFactory.decodeStream(is);//OutOfMemory error thrown here
setWallpaper(bgImage);
所以我有两个问题要处理:
- 如何在将图像设置为墙纸之前对其进行裁剪...
- 无法理解抛出了 OutOfMemoryException,因为我的图像大小都没有超过 1mb...如果 m 没记错的话,我猜 N1 的 VM 预算是 24Mb...
【问题讨论】:
-
还有一些文章提到了内存泄漏......但是在上述情况下内存泄漏是否有可能耗尽 VM 预算??
-
顺便说一句,您是否找到“如何在将图像设置为墙纸之前裁剪图像”的解决方案?我正在寻找一种使用裁剪用户界面而不是通过代码裁剪的解决方案。
标签: android image out-of-memory crop wallpaper