我可以選擇將Bitmap
保存到我的應用程序中的sdcard。
我在做保存AsyncTask
方法。這裏是我做的背景內存不足異常未捕獲
public File saveImageToExternalStorage(Bitmap image, String name) {
String fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + APP_PATH_SD_CARD + APP_THUMBNAIL_PATH_SD_CARD;
try {
File dir = new File(fullPath);
if (!dir.exists()) {
dir.mkdirs();
}
OutputStream fOut = null;
File file = new File(fullPath, name.replaceAll("/", "").trim());
file.createNewFile();
fOut = new FileOutputStream(file);
image.compress(Bitmap.CompressFormat.JPEG, 50, fOut);
fOut.flush();
fOut.close();
MediaStore.Images.Media.insertImage(getApplicationContext().getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
return file;
} catch (Exception e) {
return null;
}
我顯示有關未能保存和等用戶,如果我得到空從這個方法的一些信息。我雖然這應該是足夠的,但我從這個方法報告了一個用戶崩潰OutOfMemory
。堆棧跟蹤:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:527)
at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:301)
at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:326)
at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:796)
at com.stancedcars.wallpapers.FullSelected.saveImageToExternalStorage(FullSelected.java:223)
我很想解決OutOfMemory
問題,但Bitmap
s爲大小重,高分辨率的圖像,我不想降低質量。更重要的是,我想知道爲什麼應用程序崩潰,即使它在嘗試捕獲?
你想減少分辨率的圖像嗎?如果是這樣,我可以幫你。 – 2013-04-24 06:32:56