2010-11-18 3 views
3

Android 1.6에서 메모리 부족 오류가 발생하는 Android 애플리케이션이 있습니다. 2.0 이상에서는 정상적으로 작동합니다. 이 시점에서 런타임 메모리 사용량을 줄이려고합니다.Android 앱 - 이미지를 런타임에 재사용 할 수 있습니까?

우리는 각 화면의 배경 이미지와 같은 이미지 재사용을 고려하고있었습니다. 앱 실행시 메모리에 배경 이미지를 한 번로드하고 RAM에 전체적인 공간을 늘리는 동일한 배경 이미지를로드하는 각 화면보다는 각 화면에서이 캐시 된 사본을 재사용 할 수 있습니까?

우리는 런타임 메모리 사용에 관한 여러 가지 다른 방법과 모범 사례를 알고 있습니다. 그러나이 시점에서이 "이미지 재사용"접근법이 실제로 실현 가능한지 여부를 알고 싶었습니다.

그렇다면 어떻게 할 수 있습니까? 메모리를 절약해도 안드로이드 OS는 여전히 메모리 관점에서 이익을 내지 않는 각 화면에 대해 동일한 에셋의 복사본을 여러 개 만들 것입니까?

내 게시물을 읽는 데 시간을내어 대단히 감사합니다.

답변

0

예, 이미지를 다시 사용할 수 있습니다.

일반적으로 각 행에 동일한 이미지가 포함 된 ListView에 대해 수행됩니다.

이 경우, 어댑터의 생성자에서 Bitmap을 한 번 가져 와서 getView() 메소드에서 다시 사용할 수 있으므로 각 행에 대해로드 할 필요가 없습니다. 이 트릭이 표시됩니다 here

경우에 따라 기본 활동의 onCreate() 메소드에서 배경 비트 맵을로드하고 공개 정적 속성으로 저장 한 다음 모든 활동에서 다시 사용할 수 있습니다.

하지만 차이점은 거의없고 코드를 추가 요금으로 부과하지 않을 것이라고 생각합니다.

UI를 미세 조정할 때 아직 보지 않았다면 2009 Google I/O Presentation by Romain Guy을 보시기 바랍니다. 특히 비트 맵 조작과 관련하여 UI의 성능을 향상시키는 데 유용한 유용한 트릭을 보여줍니다.

2

해당 배경 이미지가 리소스에서 드로어 블로로드되는 경우 비트 맵 데이터는 이미 그런 방식으로 작성된 모든 Drawable간에 공유됩니다. 그래서 아니, 아마 당신의 특별한 경우에 당신을 유익하지 않을 것입니다.

관련 문제