Ejecutar código cuando se descarta una SnackBar

En el ejemplo mostramos una snackbar con una acción para reintentar y queremos finalizar una actividad solo en el caso de que el usuario descarte la snackbar (por ejemplo haciendo swipe). Nunca cuando pulse la acción para reintentar.

Snackbar.make(coordinator, message, Snackbar.LENGTH_INDEFINITE)
        .setAction(R.string.retry, new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // Retry operation
            }
        })
        .setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                super.onDismissed(snackbar, event);
                if (event != Snackbar.Callback.DISMISS_EVENT_ACTION) {
                    // Close activity, only if snackbar was dismissed not pressing action button
                    finish();
                }
            }
        })
        .show();

En el método “onDismissed” podemos recuperar el evento generado y comprobar si es uno de los que nos interesa.