This Handler class should be static or leaks might occur 문제

조회수 41회

This Handler class should be static or leaks might occur 워닝이 뜨며 habdler가 작동을 하지 않아 질문 올립니다. sm-x보드 를 사용하여 switch를 사용하는데에 있어서 문제가 발생했습니다.

final Handler handler = new Handler() {
      @Override
      public void handleMessage(Message msg) {
         switch (cnt){
         case 1:
            if (msg.arg1 == 1){
                mDriver.setCursorVisible(0);
                when =0;
            }
            cnt++;
            break;
         case 2:
            if (msg.arg1 == 1){
                mDriver.setCursorVisible(0);
                when =1;
            }
            cnt++;
            break;
         case 3:
            if (msg.arg1 == 1)
               mDriver.setCursorShift(1);
            cnt++;
            break;
         case 4:
            if (msg.arg1 == 1)
               mDriver.setCursorShift(0);
            cnt++;
            break;
         case 5:
            if (msg.arg1 == 1)

            cnt = 1;
            break;
         }
      }
   }

;

1 답변

  • Handler를 그냥 익명 클래스(anonymous class) 로 하지 않고 public class(최상단에) 또는 public static class로 옭긴 후 그 클래스를 이용하시면 됩니다. 첨부된 코드를 보면 익명 클래스가 있는데 이것을 사용하면 this에 대한 참조를 가지게 되서, 원래 클래스가 쓸 일이 끝나도, 여전히 그 참조가 남아있어 사라지지 않게 됩니다. Handler는 엄청 오랫동안 실행될 가능성이 있어 이런 경고를 띄우는 것 같습니다.

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.