Я столкнулся с проблемой с загрузочным растровым изображением в одном из моих действий с библиотекой обрезки. Я получаю OutOfMemory ошибку, если размер изображения более чем 5 MB ... Я попыталсяjava.lang.OutOfMemoryError: Android
android:largeHeap="true"
но это не помогло мне для решения проблемы. Мой Java-код и LogCat, как ниже
LogCat:
07-09 21:10:47.482: E/art(4870): Throwing OutOfMemoryError "Failed to allocate a 6391674 byte allocation with 6004224 free bytes and 5MB until OOM" 07-09 21:10:47.482: D/AndroidRuntime(4870): Shutting down VM 07-09 21:10:47.522: E/AndroidRuntime(4870): FATAL EXCEPTION: main 07-09 21:10:47.522: E/AndroidRuntime(4870): Process: com.karopass.status2017, PID: 4870 07-09 21:10:47.522: E/AndroidRuntime(4870): java.lang.OutOfMemoryError: Failed to allocate a 6391674 byte allocation with 6004224 free bytes and 5MB until OOM 07-09 21:10:47.522: E/AndroidRuntime(4870): at java.io.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:122) 07-09 21:10:47.522: E/AndroidRuntime(4870): at com.karopass.status2017.material.ImageLoader.addToDiskCache(ImageLoader.java:238) 07-09 21:10:47.522: E/AndroidRuntime(4870): at com.karopass.status2017.material.ImageLoader.saveTempImage(ImageLoader.java:271)
, а мой Java-код, как показано ниже
public File addToDiskCache(String imageName, Bitmap inImage) {
Log.e("Add to Disk",imageName);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
if(!mCacheDir.exists()){
mCacheDir.mkdirs();
}
File filePath=new File(mCacheDir.getPath()+File.separator+imageName);
if(!filePath.exists()) {
try {
filePath.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
OutputStream os=null;
try {
os= new FileOutputStream(filePath.getPath());
os.write(bytes.toByteArray());
os.flush();
} catch (IOException e) {
Log.e("Write err",filePath.toString());
}finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Log.e("storage path",filePath.toString());
return filePath;
}
Пожалуйста, помогите мне решить проблему.
Благодаря
Может быть дубликатом с http://stackoverflow.com/questions/25719620/how-to -solve-java-lang-outofmemoryerror-problem-in-android – davidxxx
Возможно, ваше растровое изображение слишком велико или, возможно, оно не вызвано этим методом, проверьте свои другие коды, чтобы узнать, забыли ли вы перерабатывать объект, особенно растровое изображение. – Harlan