뷰를 하나 만들어서 시크바의 수치에 따라 반지름값을 변경, 온드로우를 통해 원을 그리고 있습니다.
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.d("BrushSizeView", "드로우 호출 라디우스값 : " + radius);
canvas.drawCircle(cx, cy, radius, paint);
System.gc();
}
public void radiusSetter(int r){
Log.d("BrushSizeView", "라디우스 셋터 호출 : 라디우스값 " + r);
radius = r;
invalidate();
}
시크바의 프로그레스 값이 바뀔때 라디우스 셋터를 호출해서 반지름을 바꾸고 뷰를 인벨리데이트로 갱신중이죠.
근데 로그를 찍어보면 온드로우에서 찍히는 로그가 딱 4번 찍히고 더이상 찍히지 않습니다. 라디우스 셋터는 계속해서 찍히고 있구요.
로그는 이런식입니다.
07-19 16:23:49.024: DEBUG/BrushSizeView(25668): 생성자 호출
07-19 16:23:49.024: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 1
07-19 16:23:49.094: DEBUG/BrushSizeView(25668): 드로우 호출 라디우스값 : 1.0
07-19 16:23:50.464: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 6
07-19 16:23:50.484: DEBUG/BrushSizeView(25668): 드로우 호출 라디우스값 : 6.0
07-19 16:23:50.564: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 7
07-19 16:23:50.574: DEBUG/BrushSizeView(25668): 드로우 호출 라디우스값 : 7.0
07-19 16:23:50.744: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 10
07-19 16:23:50.804: DEBUG/BrushSizeView(25668): 드로우 호출 라디우스값 : 10.0
07-19 16:23:50.894: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 15
07-19 16:23:50.914: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 16
07-19 16:23:50.984: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 17
07-19 16:23:51.224: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 18
07-19 16:23:51.254: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 19
07-19 16:23:51.384: DEBUG/BrushSizeView(25668): 라디우스 셋터 호출 : 라디우스값 20
보시는것처럼 값이 변경되다가 중간에 멈춰버리죠. 눈으로 보이는것도 약간만 변경된 이후부터는 계속 변경이 안되네요. 메모리 문제일까 싶어서 드로우 이후에 gc를 호출해봤지만 그대로입니다.
원인과 해결책을 급구합니다아아....