이미지 조작 도구를 쓰고 있습니다. 이미지 품질을 이유로 최대한 큰 크기로 이미지를 편집하고 싶습니다.안드로이드 앱이 남긴 메모리 양을 알려주는 방법은 무엇입니까?
내 앱이 실행되는 동안 메모리가 부족하지 않도록주의해야합니다. 또한 많은 메모리가있는 장치를 활용하고 싶습니다. 예를 들어, G1과 같은 덜 강력한 기기에서 중간 크기의 이미지를 지원하고 삼성 Galaxy S와 같은 더 강력한 기기가 큰 이미지를 지원하도록하고 싶습니다.
내 앱에서 사용할 수있는 메모리 양을 측정하는 신뢰할 수있는 방법이 있습니까?
현재 아이디어로는로드 할 이미지 크기를 결정할 때 기기가 가능한 한 최대 70 % 가까이 앱의 메모리 사용량을 가져 오는 이미지 크기를 계산할 수 있습니다 (즉, t 나중에 나 때문에 메모리 조각화)의 작은 할당에 충돌 응용 프로그램을 원하는
나는 내가 사용 가능한 메모리의 백분율 반환하려면 다음 코드를 사용할 수 있습니다 발견했습니다
double totalMemoryUsed = (Runtime.getRuntime().totalMemory() + android.os.Debug.getNativeHeapAllocatedSize());
int percentUsed = (int)(totalMemoryUsed/Runtime.getRuntime().maxMemory() * 100);
새로운 비트 맵이 추가를 네이티브 힙 할당 부분. 이것은 신뢰할 수있는 것 같습니다 내 애플 리케이션은 예상치 못하게 추락으로 메모리 부족 오류 % percentUsed 100 % 이상갑니다. 위의 계산에 대해주의해야 할 사항이 있습니까?
내가 걱정할 것은 모든 것이 괜찮다는 것입니다. 그리고 나서 안드로이드가 이전에 자원을 죽인 백그라운드 프로세스를 재개하여 결과적으로 응용 프로그램을 중단시킬 것을 결정했습니다. –
귀하의 계산이 제게 의미가 없습니다. IMHO 당신은'Runtime.freeMemory()'와'Runtime.totalMemory()'의 조합을 사용해야합니다. Debug.getNativeHeapAllocatedSize()를 사용하는 경우 두 번 계산할 수 있습니다. http://stackoverflow.com/questions/1945142/bitmaps-in-android/1949205#1949205 Runtime.totalMemory()는 사용 가능한 양입니다. 를 프로그램에 할당하는 반면 maxMemory()는 VM에 사용할 수있는 양입니다. – Roland