Android 배경 이미지 메모리 사용량
내가 작업중인 프로젝트는 여러 "고해상도"배경을 사용합니다 (따옴표 참고). 상황을 파악하기 위해 그중 하나는 640x935 1.19M PNG 파일입니다. 내가 아는 한, Android가 이미지를 원시 데이터로 메모리에 압축 해제하더라도 이것은 다음과 같아야합니다.
640 x 935 x 4 바이트 = 2.39M
저는 제 프로젝트에서 제가 정말로 이해할 수없는 메모리 문제를 겪고 있으며 누군가가이 문제에 대해 밝힐 수 있기를 바랍니다. 제가 개발하고있는 두 개의 장치와 그 결과의 일부를 말하겠습니다.
이것이 부차적 인 문제가 아닌지 확인하기 위해 처음 만들 때 백그라운드를로드하지 않는 액티비티를 만든 다음 사용자가 버튼을 누를 때 수행하는 모든 작업은 다음과 같습니다.
findViewById(R.id.completed_block_background).setBackgroundResource(R.drawable.blockbackgroundbottom1);
그런 다음 프로세스에서 "업데이트 힙"과 함께 DDMS를 사용하고 (먼저 GC가 이것이 문제가되지 않는지 확인하도록 강제) 다음과 같은 메모리 결과를 얻습니다.
Nexus S : 18M에서 26M으로 증가 (8M 차이)
Galaxy Nexus : 2,800 만에서 3,900 만 (1,100 만 차이)
따라서 보시다시피 이론적으로 압축되지 않은 2.39M 이미지를 배경에 배치하면 실제로 메모리 사용량이 8M 및 11M 증가합니다. 누군가 이것이 왜 그리고 해결책이 있는지 설명 할 수 있습니까?
내가 찾을 수 있었던 유일한 해결책은 해상도를 반으로 줄이거 나 채널 형식을 낮추기 위해 비트 맵을 사용하는 것입니다 (지금까지 이것이 제가 한 작업이며 565 RGB로 전환했지만 받아 들일 수없는 몇 가지 밴딩 문제가 발생합니다).
할 수있는 일이없는 경우에도 왜 이런 일이 발생하는지에 대한 설명도 받아 들일 것입니다. 미리 감사드립니다.
그것이 이미지를 그렇게 크게 만드는 이유입니까?
글쎄, 무슨 일이 일어나고 있는지 setBackgroundResource(R.drawable.blockbackgroundbottom1)
Android가 먼저 BitmapFactory.decodeResource()
실험 한 작업을 수행 하지만 렌더링 논리가 이미지를 조정하여 배경으로 적용하도록합니다. 예를 들어 Galaxy Nexus와 Nexus S의 3MB 차이는 아마도 LinearLayout
.
리소스 트리에서이 이미지를 저장 한 위치에 따라 화면 밀도에 따라 일부 리샘플링이 진행될 수도 있습니다.
어떤 식 으로든 원본 이미지 크기를 유지하도록 할 수있는 방법이 있습니까?
커프 끄기, 내가 처음에 넣어 시도 할 것입니다 res/drawable-nodpi/
수동으로 얻을, (모든 자동 밀도 기반 리샘플링을 방지하기 위해) Bitmap
버전을 통해 BitmapFactory.decodeResource()
그 소요 BitmapFactory.Options
당신이 그것을 읽을되고으로 확장 얻을 수 있습니다. 즉 않는 경우 별로 도움이되지 않는 것 같으면 PNG를 드로어 블 리소스에서 원시 리소스 또는 자산으로 옮겨야 할 수 있습니다. Android는 여전히 크기가 조정되지 않은 이미지 사본을 보유하려고 할 수 있습니다. BitmapFactory.decodeResource()
직접 사용하면 될 것 같지 않지만 배제 할 수는 없습니다.
참조 URL : https://stackoverflow.com/questions/13118005/android-background-image-memory-usage
'development' 카테고리의 다른 글
HTTP 프로토콜의 PUT 및 DELETE 및 PHP에서의 사용법 (0) | 2020.12.29 |
---|---|
Spring MVC 3에서 페이지 네이션을 구현하는 방법 (0) | 2020.12.29 |
서명되지 않은 char을 char로 또는 그 반대로 바꿀 수 있습니까? (0) | 2020.12.29 |
VS2013 데이터베이스 프로젝트가 빌드되지 않음 (0) | 2020.12.29 |
이러한 폴더의 공유 이름에 달러 기호가 추가 된 이유는 무엇입니까? (0) | 2020.12.29 |