안녕하세요... 안드로이드 초보개발자입니다. 붙잡고 있다가 너무 답답한 마음에
도움의 손길을 청합니다....
PhonsStateListener 의 onCallStateChanged 를 쓰고 있는데
어플을 종료 후 다시 실행해도 여전히 리스너가 살아 있어서 질문 올립니다...
설정 들어가서 어플리케이션 강제 종료를 하면 정상적으로 전화가 올 때마다 로그가 한 번씩 뜨지만
강제 종료를 하지 않고 뒤로 가기 버튼을 이용해서 종료하면 어플을 다시 실행 했을 때
여전히 이전의 리스너가 죽지 않고 살아 있는 상태로 남아 있습니다.
제가 쓴 리스너는 PhoneStateListener 의 onCallStateChanged() 입니다.
tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incommingNumber){
switch(state) {
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG, " CALL_STATE_RINGING.:" + incommingNumber);
Log.i(TAG," 제발 한 번만 실행돼라.");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.d(TAG,"CALL_STATE_IDLE ");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(TAG,"CALL_STATE_OFFHOOK ");
break;
}
}, PhoneStateListener.LISTEN_CALL_STATE);




저 리스너는 등록하고 나서 해제해주어야 하는 걸로 아는데요. 아래 코드를 한번 써보시죠.
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}