<BlockSwitcher>
<Block name="Java">

```java
// Listen for sign out events.
final String signedOutEventName = AuthChannelEventName.SIGNED_OUT.toString();

Amplify.Hub.subscribe(HubChannel.AUTH,
    anyAuthEvent -> signedOutEventName.equals(anyAuthEvent.getName()),
    // When one arrives, clear the DataStore.
    signedOutEvent -> Amplify.DataStore.clear(
        () -> Log.i("MyAmplifyApp", "DataStore is cleared."),
        failure -> Log.e("MyAmplifyApp", "Failed to clear DataStore.")
    )
);
```

</Block>
<Block name="Kotlin - Callbacks">

```kotlin
Amplify.Hub.subscribe(HubChannel.AUTH,
    {
        // Listen for sign out events.
        it.name.equals(AuthChannelEventName.SIGNED_OUT.toString())
    },
    {
        // When one arrives, clear the DataStore.
        Amplify.DataStore.clear(
            { Log.i("MyAmplifyApp", "DataStore is cleared") },
            { Log.e("MyAmplifyApp", "Failed to clear DataStore") }
        )
    }
)
```

</Block>
<Block name="Kotlin - Coroutines">

```kotlin
Amplify.Hub.subscribe(HubChannel.AUTH)
    { it.name == AuthChannelEventName.SIGNED_OUT.toString() }
    // When sign out event arrives, clear the DataStore.
    .onEach { Amplify.DataStore.clear() }
    .catch { Log.e("MyAmplifyApp", "Failed to clear DataStore.", it) }
    .collect { Log.i("MyAmplifyApp", "DataStore is cleared.") }
```

</Block>

<Block name="RxJava">

```java
// Listen for sign out events.
final String signedOutEventName = AuthChannelEventName.SIGNED_OUT.toString();

RxAmplify.Hub.on(HubChannel.AUTH)
    .filter(event -> signedOutEventName.equals(event.getName()))
    .flatMapObservable(RxAmplify.DataStore::clear)
    .subscribe(
        () -> Log.i("MyAmplifyApp", "DataStore is cleared."),
        failure -> Log.e("MyAmplifyApp", "Failed to clear DataStore.")
    );
```

</Block>
</BlockSwitcher>

