마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

하루 종일 삽질 하고 있습니다. ㅜㅜ 리스너 문제

0 추천
xml로 android:screenOrientation="landscape" 하여 가로로 놓고 하는 게임을 만들었습니다.

 

리스너에서 센서 리스너를 움직이는 게임인데요.

 

초기 버전에 가끔 리스너가 2개가 실행되는지 속도가 2배가 되는 버그를 봤었는데 1~2번 뜨길래 잊고 있었습니다.

 

지속적인 업데이트 중에 갑자기 위에서 말한 리스너 2개가 켜져 빨라지는 버그가 있다는 제보가 들어왔습니다.

 

물론 제 갤럭시s2 탭4 노트2 갤럭시s6에는 문제가 없었습니다.  잘 되는 분들도 많구요.

 

그래서 리스너 등록 위치를 보니 onCreate() 속에 있어서 onCreate()가 2번 실행되나하고 봤더니 가로 세로 전환시

onCreate() 2번 실행된다는 글들을 보고 onCreate()에 리스너 등록은 일단 두고 onDeStroy()에 리스너 해제하는 메서드를 넣었습니다.

근데 갑자기 아예 리스너가 켜지지 않아 게임이 움직이지 않는다는 버그 제보가 또 들어왔습니다.

친구 소니폰도 전 버전은 잘 되다가 갑자기 리스너가 안 켜져 게임이 움직이지 않는 버그가 났습니다.

그래서 전전 버전을 한 번 보내줬더니 전전버전도 움직이지 않았습니다.

현재 코딩 순서는 이렇습니다.

 

 MainActivity ~~~{

onDestroy(){

리스너 해제

}

SensorListener listener;

onCreate(){

리스너 등록

}

}

 

왜 리스너가 안 되는걸까요?

또 왜 리스너가 2번 켜진걸까요? ㅜㅜ
단초 (1,450 포인트) 님이 2015년 7월 9일 질문

2개의 답변

0 추천
하루 종일 삽질하다 한 가지 알아냈게 있는대요. 기기를 껐다 켰더니 되네요 ㅜㅜ

CPU 문제였을까요?
단초 (1,450 포인트) 님이 2015년 7월 9일 답변
단초님이 2015년 7월 9일 수정
0 추천
예외처리만 조금 추가 하시면 쉽게 해결될 문제 같아 보입니다.

- 리스너 등록시

if (리스너가 등록되어 있지 않으면) {

   리스너 등록

} else {

  //리스너가 이미 등록되어 있으니 패스

}

리스너 해제는 반대로 처리하시면 되구요
Gradler (109,780 포인트) 님이 2015년 7월 10일 답변
...