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