1

scrollview에 큰 이미지가 있기 때문에 더 많은 메모리를 얻기 위해 내 응용 프로그램에서 android : largeHeap을 사용하고 있습니다. 그렇지 않으면 응용 프로그램이 outofmemory 예외로 인해 작동을 멈 춥니 다.Monodroid/Android 사용 안드로이드 : 오래된 장치의 largeHeap

두 개의 기기가 있습니다. 하나는 Android 4.2 jellybean이고 다른 하나는 Android 2.3 Gingerbread입니다. 4.2에서 android : largeHeap은 정상적으로 작동하지만 2.3에서는 사용할 수 없습니다.

두 기기에 만족할만한 방법이 있습니까? 도와 주셔서 감사합니다.

답변

0

largeHeap 매개 변수가 Honeycomb (3.0)에 추가되었으므로 하위 장치에서는 작동하지 않습니다.

그러나 largeHeap 매개 변수를 사용하는 것은 해결책이 아닙니다. 절대적인 최후의 수단으로 사용해야합니다. 그것은 큰 No-No 인 여분의 힙을 얻기 위해 안드로이드가 백그라운드 프로세스 나 앱을 종료하도록 강제 할 것입니다!

당신은 ScrollView에 큰 이미지가 있다고 말합니다. BitmapFactory를 사용하여 먼저 이미지의 크기를 적절하게 조정 해 보았습니까?

편집 : 또한 이미지를 3 개로 분할했다고 언급했습니다. 각 비트 맵은 추가 메모리를 소비하므로 그렇게하지 마십시오. 대신 하나의 비트 맵으로 유지하면서 전체 비트 맵에서 크기 조절을 수행하십시오.

+0

나는 알고있다. 내가 시도한 것은 3 개 부분으로 이미지 (4096 픽셀 너비 이상)를 분할 한 것입니다. insamplesize를 설정하기 위해 BitmapFactory도 사용했지만 어쨌든 응용 프로그램이 충돌합니다. 한 경우에는 효과가 있었지만 스크롤보기의 스크롤 속도가 느려졌습니다. :/ – anguish

+0

inSampleSize도 얼마만큼 설정 했습니까? 4096px 이미지의 경우 고해상도 및 대형 (> 7 ") 화면에서 실행하지 않는 한 품질을 8로 설정해도 품질이 눈에 띄지 않습니다. –

+0

8을 사용하면 숫자를 읽을 수 없으며, 왜냐하면 그 위에 작은 숫자의 비트 맵이있어서 3을 사용하는 것이 내가 사용할 수있는 최대 값 이었기 때문이다. – anguish

0

getLargeMemoryClasss()과 함께 사용되는 것으로 가정합니다. API 11 // Android 3 // Honeycomb에서만 사용할 수 있습니다.

사이드 노트로, 나는 당신이 그것을 필요로하는지 확신 할 수 없다. 단지 이미지의 크기를 조절할 수 없을까?

0

Here은 outfmemory 오류가 발생하지 않고 응용 프로그램의 heapsize를 늘리지 않아도되도록 효율적으로 비트 맵을 사용하는 방법에 대한 stackoverflow에 대한 자세한 설명입니다.

+0

Android에서 문제를 피할 수있는 끔찍한 방법 인 자신의 대답에 연결했습니다. 그 질문에 대한 대답을 가리 키도록 편집했습니다. –

+0

내 편집 내용이 너무 작아서 승인을받을 수없는 것처럼 보입니다 ... 어쨌든, 링크 된 질문에 대한 대답은 http://stackoverflow.com/a/13363988/1133908 –

+0

입니다. 나는 그 페이지로 데려다주고 싶습니다. 나는 그 질문에 따라 왔고 내 대답은 거기 없다는 것을 알고있다. 왜 내가 너를 다른 곳으로 데려 갈까? 또한 나는 링크를 편집했다. –