private class CursorBlink implements Runnable {
private static final int BLINK_REPEAT_INTERVAL = 500;
public void run() {
drawCursor(null);
postDelayed(this, BLINK_REPEAT_INTERVAL);
}
}
이와 같은 클래스를 만들어서 커서를 깜빡이는 걸 구현하고 있습니다..
private CursorBlink mCursorBlink = new CursorBlink();로 선언하고
onCreate()에서
post(mCursorBlink); 로 동작하게 해놨습니다..
그런데 이게 메모리를 잡아먹는것 같네요...
해당 뷰를 가진 액티비티 종료/시작 을 반복하면 메모리가 100kb정도씩 반환되지 않고 쌓입니다..ㅠㅠ
커서 그리는 쓰레드를 선언하지않고 안쓰면 물론 메모리 릭은 발생하지 않구요..
종료시키거나 반환해야 할것 같은데 어떤식으로 해야 할지 모르겠네요
mCursorBlink.stop();
mCursorBlink.interrupt();은 지원하지 않는것 같구요..
public void drawCursor(Canvas canvas) {
Rect cursorRect = calculateCursorRect();
if (canvas == null) {
invalidate(cursorRect);
} else {
if (!isCursorDrawn) {
Paint workPaint = new Paint();
workPaint.setColor(Color.BLACK);
canvas.drawRect(cursorRect, workPaint);
}
isCursorDrawn = !isCursorDrawn;
}
}
drawCursor()는 이와 같구요.
보시다 시피 여기에는 딱히 릭 발생이 있을 만한 게 없습니다..ㅠㅠ




drawCursor()가 직접 구현하신건가요? 여기서 메모리릭이 발생하는것 아닌가요?