여러가지 방도를 모색했는데... 크기 있는 프로젝트에서는 소용없네요.

 

원론인 확실한 해제만이 살길 같은데 이를 해결하기 위해 Bitmap 객체의 사용 유무를 판단할 수 있을까?가 질문입니다.

 

레퍼런스 카운트에 의한 결과 보고 클래스(ReferenceQueue)가 있긴 한데 맹점이 있습니다.

 

만약 Bitmap 객체를 감시할 때 이 객체의 레퍼런스 카운트가 0이 되면 해제되었다고 알려주지만 Bitmap 객체를 알 수 없고 이를 감시했던

 

감시자의 객체만 알 수 있습니다.

 

1. 감시자 객체에 Bitmap 객체 설정.

 

2. Bitmap 객체의 레퍼런스 카운트가 0이 됨.

 

3. 감시자 객체가 개발자에게 통보함.

 

4. 감시했던 객체를 알 수 없음.

 

이럴 경우 Bitmap을 사용하는 View 객체를 감시하고 감시자와 Bitmap을 HashMap으로 관리한 다음 해제하는 방법도 있지만 (현재 이 방법 씀)

 

이 경우 한 Bitmap을 여러 View가 사용할 경우 문제가 생깁니다.

 

결국... Bitmap 객체를 감시하고 HashMap에는 (감시자 객체, Bitmap 객체의 주소 + 1) 뭐 이런식으로 관리하다 감시자가 객체 해제를 통보하면

 

HashMap에서 Bitmap 객체의 주소 - 1을 하여 recycle하는 방법이 있지만... 네이티브 언어가 아니기 때문에 어드레스 입력이 불가능하네요...