2014-02-21 2 views
0

Galaxy S4 사용자의 응용 프로그램에서 많은 "메모리 부족"보고서가 있습니다.비트 맵을 사용하는 동안 s4에서 메모리가 부족합니다.

앱이 비트 맵으로 작업하고 있습니다. 그래픽 UI가 있습니다. 그것은 모든 장치에서 잘 작동하지만 S4에서는 충돌합니다.

S4 용으로 특수 메모리 관리가 필요한지 알고 계십니까?

+1

사람은 넥서스 5에 시도 했습니까? 화면 크기로 비트 맵을 확대하고 있습니까? S4는 꽤 멋진 화면을 가지고 있습니다. 화면 크기에 맞게 조정 된 것이면 다른 기기보다 더 많은 메모리를 사용하게됩니다. – user1676075

+0

로테이터에서 여러 가지 비트 맵을 사용 중이며 전체 화면으로 확장되지 않았습니다. 활동을 시작할 때마다 기억의 일부가 손실됩니다. – Hamid

답변

1

S4가 메모리 관리 나 이미지와 함께 일반적인 것을 소개하지 않는다고 생각합니다. 나는 애플 리케이션의 메모리 사용량을보고 도움이 될 것 같아요.이 응용 프로그램의 가능한 누출 및 메모리 소비를 보고이 가이드를 따르십시오.

http://developer.android.com/tools/debugging/debugging-memory.html

당신은 당신은 내가 비트 맵과 메모리 문제가 있었 내 애플 리케이션에 ... 당신의 응용 프로그램에서 이미지를 처리했다입니다. 좋은 팁은 LRUCache를 사용하여 비트 맵을 캐시하고 관리하는 것입니다. LruCache를 이해하려면 아래 링크를 클릭하십시오. 이 도움이

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

희망!

+0

또한보십시오 : http://developer.android.com/training/displaying-bitmaps/index.html – luckylukein

1

이 문제를 해결하려면 이미지의 메모리 사용 방식을 이해해야합니다.

이미지를 상상해보십시오 (800x800 픽셀). 스케일링 없이는 약 2.5MB의 메모리가 필요합니다. 폭 x 높이 x 4 바이트.

로드 된 모든 이미지는 크기가 제한되어있는 힙에 저장됩니다 (힙 크기에 대한 논의가 많이 있습니다).

이제 해당 이미지를 1024x768 화면에 표시되는 ImageView에로드하십시오. ImageView의 크기는 800x800이며 이미지와 같은 크기입니다. 권장하는대로 DIP를 사용하므로 UI가 확장됩니다.

1024x768 디스플레이에는 786,432 픽셀이 있습니다. S4는 1920x1080 = 2,073,600 픽셀입니다. 1024x768 장치의 약 2.6 배.

이미지의 크기를 조정하지 않고 밀도 및 해상도 "버킷"리소스 폴더를 사용하지 않으면 같은 이미지에 2.5x2.6MB = 6.6MB가 필요합니다.

핵심은 당신이 그것을 제어하지 않는 한, 이미지가 다른 장치에 힙 메모리의 서로 다른 양의 (제한되는,이 장치가 얼마나 많은 RAM 를 중요하지 않습니다)를 사용하는 것입니다.

앱에 Nexus 기기에 문제가있는 것으로 의심됩니다.

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

http://developer.android.com/guide/practices/screens_support.html

관련 문제