1

Android 서비스에 바인딩하는 Android 앱을 개발 중입니다.안드로이드 서비스가 응용 프로그램 충돌 또는 종료시 바인딩 해제

문제는 Android 서비스가 다른 장치와의 Bluetooth 연결을 담당한다는 것입니다.

당분간 내 서비스는 DisconnectBluetooth() 메서드를 노출하며 이로 인해 Bluetooth 연결이 종료됩니다.

은 내가하는 일은 DisconnectBluetooth 방법은 내 onDestroy 방법에서, unbindService 호출에 의해 따랐다 호출하는 것입니다 때문에 응용 프로그램이 정지 할 때, 블루투스 연결이 폐쇄되고, 서비스가 결합되지 않은 것입니다.

것은 내가 앱 선택기에서 그것을 swipping에 의해 종료에 강제로 할 때 내 응용 프로그램 충돌, 또는 때때로는 onDestroy 메서드를 호출하지 않을 경우이다. 응용 프로그램이 종료되지만 서비스는 여전히 살아 있으므로 블루투스 연결이 여전히 살아 있습니다.

블루투스 연결을 종료하고 가능한 경우 서비스 바인딩을 해제하려면 어떻게해야합니까? 활동이 명시 적으로 unbindService() 방법을 호출하는 경우 항상 onUnbind() 메서드를 재정의 생각

@Override 
protected void onDestroy() { 
     if (_api.isConnect()) { //<-- If bound to service, and everything OK 
     _api.DisonnectBluetooth(); //<-- Close BT connection with device 
     _api.ReleaseService(); //<-- Unbinds service 
     } 
    } 
    super.onDestroy(); 
} 
+0

**들의 OnDestroy() **와 동의어되지 않습니다 ** unbindService() **. 시작한 서비스와 바운드 서비스를 함께 원할 수도 있습니다. 읽기 : developer.android.com/guide/components/bound-services.html -'서비스를 시작하고 바인딩 할 수있게하면 서비스가 시작되면 시스템이 모든 클라이언트 바인드 해제. 대신 stopSelf() 또는 stopService()를 호출하여 명시 적으로 서비스를 중지해야합니다. ' –

답변

1

은에만 호출 될 것이다.

아니요. 내 앱이 최근 앱 선택기를 스왑하여 종료되거나 강제 종료 되더라도이를 호출합니다. 내가 그렇게 onunbind 사용보다는 onTaskRemoved하기로 결정

참고 : 나는 자 마린을 사용하고, 나는이 자바 안드로이드에서 작동하도록 보장 할 수 없습니다

+0

이전에 언급 된 것에 대해 사과드립니다. 이 답변의 텍스트는 답변과 같이 읽지는 ​​않지만 정말로 대답합니다. –

관련 문제