단일 스레드를 사용하여 런타임에 ImageViews (약 13)를 추가 할 레이아웃이 있습니다. 7 개 또는 8 개의 이미지 (970px x 970px, 270kb)를로드하면 응용 프로그램이 충돌하여 메모리 부족 오류가 표시됩니다. 이제 13 개의 다른 이미지를 선택하는 대신 동일한 이미지를로드하면 잘 표시됩니다. 또한 이미지의 크기를 줄이면 (16px x 16px, 770bytes) 잘 표시됩니다.Android Out of Memory 리소스에서 이미지를로드 할 때 오류가 발생했습니다.
그렇다면 이미지로드시 허용되는 최대 메모리는 누구에게 알 수 있습니까? 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 분명히 사람들은 이미지 갤러리를로드하는 등의 이유로이 문제를 해결했습니다. 응용 프로그램에 이미지를로드하는 가장 좋은 방법은 무엇입니까? 어떤 도움이라도 대단히 감사하겠습니다.
다음은 자원에서 이미지를 읽는 방법입니다. 이것은 내가 읽을 수있는 객체 목록에서 "drawableName"을 가져 오는 루프 내입니다. 이것은 모든 스레드의 onPostExecute 내에서 (즉, 새로운 AsyncTask를())
String defType = "drawable";
String defPackage = this.getPackageName();
int resourceId = Activity.this.getResources().getIdentifier(drawableName, defType, defPackage);
((ImageView) view.findViewById(R.id.iv_image)).setImageResource(resourceId);
http://stackoverflow.com/questions/16765899/out-of-memory-error-with-bitmap/16766123#16766123합니다. 이것이 도움이된다면 이것을 확인하십시오 – Raghunandan
이 이미지들은 꽤 큽니다 ... – njzk2
고마워요, 그 링크 Raghunandan을 확인하겠습니다. njzk2, 평균 크기는 어떻게 되나 모든 화면 크기에서 이미지를 호환 가능하다고 생각하십니까? 로드하는 이미지의 수가 실제 크기를 반영하므로 실제 크기가 큰 차이를 만들지 않는다고 가정 해보십시오 (예 : 100 개의 작은 이미지로드는 10 개의 큰 이미지로드와 같을 수 있음). –