liiir1985 7f62dcda9f | ||
---|---|---|
.. | ||
api | ||
src | ||
test | ||
README.md | ||
build.gradle.kts | ||
package.list |
README.md
Module kotlinx-coroutines-play-services
Integration with Google Play Services Tasks API.
Extension functions:
Name | Description |
---|---|
Task.asDeferred | Converts a Task into a Deferred |
Task.await | Awaits for completion of the Task (cancellable) |
Deferred.asTask | Converts a deferred value to a Task |
Example
Using Firebase APIs becomes simple:
FirebaseAuth.getInstance().signInAnonymously().await()
val snapshot = try {
FirebaseFirestore.getInstance().document("users/$id").get().await() // Cancellable await
} catch (e: FirebaseFirestoreException) {
// Handle exception
return@async
}
// Do stuff
If the Task
supports cancellation via passing a CancellationToken
, pass the corresponding CancellationTokenSource
to asDeferred
or await
to support bi-directional cancellation:
val cancellationTokenSource = CancellationTokenSource()
val currentLocationTask = fusedLocationProviderClient.getCurrentLocation(PRIORITY_HIGH_ACCURACY, cancellationTokenSource.token)
val currentLocation = currentLocationTask.await(cancellationTokenSource) // cancelling `await` also cancels `currentLocationTask`, and vice versa