Evento previo al cierre de aplicación Android

publicado por: Anonymous

En una aplicación tengo una actividad principal y varios fragments, el aplicativo funciona conectándose a dos dispositivos bluetooth.

Lo que necesito es que antes de cerrar LA APLICACIÓN se desconecte y apague el bluetooth del movil. He probado con los métodos onDestoy() y onPause() dentro del MainActivity pero no tengo los resultados esperados pues si bien el blue se apaga el aplicativo se hace inestable y se genera excepciones y no puede salir normalmente.

Alguien me puede guiar con el método sobre el cual debo programar. Muchas gracias.

@Override
public void onDestroy(){
    super.onDestroy();
    try {
        mBluetoothAdapter.disable();
        mBluetoothGatt.disconnect();
    } catch (Exception ex) {
    }
}

Recalco el problema no son las lineas de código, pues si apagan el bluetooth, sino es el evento dentro de cual lo hago el que genera excepciones no deseadas.

solución

Revisa esta respuesta de @BradHein, primeramente debes cerrar los streams y las conexiones abiertas y despues el BluetoothAdapter/BluetoothManager :

@Override
public void onDestroy(){
    super.onDestroy();
    try {
        resetConnection();
        if (mBluetoothAdapter.isEnabled()) { //comprueba esta habilitado.
              mBluetoothAdapter.disable(); //Deshabilita.
        }
        //mBluetoothGatt.disconnect();
    } catch (Exception ex) {
    }
}

método resetConnection() :

private void resetConnection() {
        if (mBTInputStream != null) {
                try {mBTInputStream.close();} catch (Exception e) {}
                mBTInputStream = null;
        }

        if (mBTOutputStream != null) {
                try {mBTOutputStream.close();} catch (Exception e) {}
                mBTOutputStream = null;
        }

        if (mBTSocket != null) {
                try {mBTSocket.close();} catch (Exception e) {}
                mBTSocket = null;
        }

}

Revisa el ciclo de vida de la Activity :

introducir la descripción de la imagen aquí

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *