1

Service에 바인딩하려면 Activity이 필요한 앱을 개발하고 있습니다. 저는 보통 bindServiceunbindService을 사용하고 있습니다. 그러나 방향 변경을 통해 바인딩을 유지하려고합니다. 이를 위해 onRetainCustomNonConfigurationInstance을 무시합니다. 그러나 나는 문제에 직면 해있다. unbind으로 전화를 걸려면 isFinishing()으로 끝나고 작동하지만 이 누출되었다는 경고가 표시되면 Exception이 던져 졌는지 확인합니다. 나는 이것이 주위에 일할 수 있는지 모른다. unbind에 대한 호출이되는 회전 후, 나는 메시지 서비스방향 변경을 통한 Android Mantain 서비스 연결

내가 유지하고 원래 ServiceConnection을 바인딩 해제하고있어 등록되지하지만이 작동하지 않습니다와 함께 IllegalArgumentException을받을 경우

내 주요 문제이다.

Activity에 붙어있는 FragmentService을 사용하고 있기 때문에 바인딩이 방향 변경을 통해 유지됩니다.

해결 방법이 있습니까? 또는 Fragment에도 ServiceConnection을 넣어야합니까? 당신이 serviceconnection 객체와 서비스를 결합하려고 할 때, 당신은 활동 컨텍스트를 사용했기 때문에

감사

답변

2

당신은 예외 ServiceConnection이를 유출되어지고있다. 따라서 장치 방향이 변경되고 ServiceConnection을 저장할 때 누수가 발생합니다.

은 ( getApplicationContext()를) 응용 프로그램 컨텍스트를 사용하여이 문제를 해결할 것입니다, 당신의 활동에 어느 곳 및 바인딩 해제 서비스를 결합 동안 누출을 방지하기 위해 당신은 ServiceConnection

바인딩 누출되지 않습니다 :

getApplicationContext().bindService(new Intent(this, TestService.class), serviceConnection, BIND_AUTO_CREATE); 

바인딩 해제 :

getApplicationContext().unbindService(serviceConnection)