2015-01-29 3 views
0

호출을 수신하는 PhoneStateListener가있는 응용 프로그램이 있습니다. IntentService를 사용하여 데이터베이스에 호출 정보를 업로드하고 있습니다. 내가 이상적들의 OnDestroy()가 호출 앱이 종료되는 경우 PhoneStateListener에 관계없이 모든 시간을 실행하려면, 또는 과정이여러 PhoneStateListeners 호출 중

callStateListener = new CallStateListener(this.getApplicationContext(), false); 
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE); 

내 MainActivity.java의에서 onCreate()에서 새로운 PhoneStateListener을 살해 됐어.

앱을 최소화 한 후에도 계속 켜져 있습니다. 그리고 당신이 back 버튼을 누르고 onDestroy()가 호출 된 후에도 계속 켜져 있습니다. 하지만 onDestroy()가 호출 된 이후에 다음 번에 앱을 열고 새 PhoneStateListener가 만들어지면 onCreate()가 호출됩니다. 이제 전화가 걸려 오면 같은 전화 두 개가 업로드됩니다. 만약 내가 다시 버튼을 눌러서 3 개의 PhoneStateListeners가 실행 중이라면 앱을 다시 열면됩니다.

답변

1

청취자를 등록 취소하지 않았으므로 여러 번 호출합니다. 사용자들의 OnDestroy() 메소드의 추가에, 이렇게하려면 :

telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_NONE); 

을 당신의 "이상적인 경우"의 경우, 듣기를 할 액티비티 대신 배경 서비스를 사용해야합니다.

+0

감사합니다. 제 문제를 해결했습니다. BroadcastReceiver를 사용하여 PhoneStateListener를 호출했습니다. – Brian

+0

기쁜 마음으로 도와 줬어! 그것이 당신을 도운다면 대답에 투표 할 자유를 느껴보십시오 :) – Vesko