5
비트 맵을 포함하여 많은 정보를 가져 오는 사용자 지정보기가 있습니다. 이 드로잉을 비트 맵에 캐시하고 싶으므로 드로잉 작업과 계산을 반복하는 대신 onDraw 내에 하나의 비트 맵을 그릴 필요가 있습니다.안드로이드보기에서 비트 맵을 올바르게 할당 해제 할 위치는 어디입니까?
비트 맵을 더 이상 사용하지 않으면 재활용해야합니다. onDestroy() 또는 View 클래스에서 원격으로 비슷한 것은 없습니다. 이를 달성하기 위해 재정의 할 수있는 콜백 메서드가 있습니까?
public void <insert_callback_here>() {
cachedBitmap.recycle();
}
애니메이션이 없습니다. 이것은 정적 이미지입니다. 이미지를 그리는 데는 많은 계산이 필요하므로 onMeasure()에서 한 번 해보십시오.
이것은 정확히 내가 필요한 것입니다. 추가하기 만하면 메모리가 충분하지 못하여 문제가 발생하여 비트 맵을 재활용 한 후 System.gc()도 실행했습니다. –
좋은 점이 있지만 onCreate()에서 finish()를 호출하는 앱에주의해야합니다. 이렇게하면 메모리 누수가 발생할 수 있습니다 (https://medium.com/square-corner-blog/android-leak-pattern-subscriptions 참조). -in-views-18f0860aa74c). – RhetoricalRuvim
또한 중요 : onMeasure() 및 onDraw() 내부에 아무 것도 할당하지 않는 것이 좋습니다. 예를 들어 레이아웃 계층에 따라 onMeasure()는 뷰의 최종 크기가 결정되기 전에 2 ~ 3 번 호출됩니다. onSizeChanged() 내부에서 다시 할당하는 것이 좋습니다. – RhetoricalRuvim