2014-10-23 4 views
0

제목에서 알 수 있듯이 고해상도 이미지로 가득 찬 레이아웃으로 약 8 회의 활동이 있습니다. RAM 메모리가 적은 약한 안드로이드 운영 체제에서는 각 활동을 단독으로 열지 만 다른 프로그램을 열려고하면 충돌이 발생합니다. 하지만 앱을 다시 시작하고 해당 활동을 열면 작동합니다. 첫 번째 활동에서 이러한 이미지의 앱 메모리를 정리하여 다른 활동을 열려면 어떻게해야합니까? onDestroy()는 그것을 정리합니까?활동을 종료 한 후 메모리를 정리하는 방법

+0

나는 그것에 대해 걱정할 필요가 없다고 생각합니다. 안드로이드 시스템은 당신을 위해 그것을한다 – Nabin

답변

2

xml 레이아웃의 리소스 이미지가 마음에 들면 정리할 필요가 없습니다. 안드로이드가 대신 해줄 것입니다. 하지만 큰 비트 맵 객체를 사용한다면.

Bitmpap bmp; // not null 
bmp.recycle(); 
bmp = null; 

final boolean bmpIsRecycled = bmp.isRecycled() 
// Returns true if this bitmap has been recycled. 

이 비트 맵과 관련된 기본 객체를 해제하고 픽셀 데이터에 대한 참조를 지 웁니다. 이렇게하면 픽셀 데이터가 동 기적으로 해제되지 않습니다. 다른 참조가 없으면 단순히 가비지 수집을 허용합니다. 비트 맵은 "dead"로 표시되어 getPixels() 또는 setPixels()가 호출되면 예외가 발생하고 아무 것도 그리지 않습니다. 이 작업은 되돌릴 수 없으므로 비트 맵을 더 이상 사용하지 않을 경우에만이 작업을 호출해야합니다. 이것은 고급 호출이며 일반적으로 호출 할 필요가 없습니다. 일반적인 GC 프로세스는이 비트 맵에 대한 참조가 더 이상 없을 때이 메모리를 비 웁니다.

실제로 앱이 중단되면 어떤 오류 로그가 있습니까? 어쩌면 메모리 누수와 관련이 없습니까?

+0

그래, 그것은 기억이났다. 앱에서 모든 활동을 더 많이 열려고 시도한 다음 큰 이미지로 시작하여 추락했습니다 ... 크기를 조정 했으므로 이제는 괜찮습니다. – user3932494

관련 문제