Concurrent
Latest Update | Stable Release | Release Candidate | Beta Release | Alpha Release |
---|---|---|---|---|
December 11, 2024 | 1.2.0 | - | - | 1.3.0-alpha01 |
Declaring dependencies
To add a dependency on Futures, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.
Add the dependencies for the artifacts you need in the build.gradle
file for
your app or module:
Groovy
dependencies { implementation "androidx.concurrent:concurrent-futures:1.2.0" // Kotlin implementation "androidx.concurrent:concurrent-futures-ktx:1.2.0" }
Kotlin
dependencies { implementation("androidx.concurrent:concurrent-futures:1.2.0") // Kotlin implementation("androidx.concurrent:concurrent-futures-ktx:1.2.0") }
For more information about dependencies, see Add Build Dependencies.
Feedback
Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.
See the Issue Tracker documentation for more information.
Version 1.3
Version 1.3.0-alpha01
December 11, 2024
androidx.concurrent:concurrent-futures:1.3.0-alpha01
and androidx.concurrent:concurrent-futures-ktx:1.3.0-alpha01
are released. Version 1.3.0-alpha01 contains these commits.
Bug Fixes
- This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(I0faf4, b/326456246)
Version 1.2
Version 1.2.0
June 12, 2024
androidx.concurrent:concurrent-futures:1.2.0
and androidx.concurrent:concurrent-futures-ktx:1.2.0
are released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
- Added
SuspendToFutureAdapter
for translating a call to a suspending API into aListenableFuture
.
Version 1.2.0-rc01
May 29, 2024
androidx.concurrent:concurrent-futures:1.2.0-rc01
and androidx.concurrent:concurrent-futures-ktx:1.2.0-rc01
are released. Version 1.2.0-rc01 contains these commits.
Version 1.2.0-beta01
May 14, 2024
androidx.concurrent:concurrent-futures:1.2.0-beta01
and androidx.concurrent:concurrent-futures-ktx:1.2.0-beta01
are released. Version 1.2.0-beta01 contains these commits.
Version 1.2.0-alpha03
March 20, 2024
androidx.concurrent:concurrent-futures:1.2.0-alpha03
and androidx.concurrent:concurrent-futures-ktx:1.2.0-alpha03
are released. Version 1.2.0-alpha03 contains these commits.
Bug Fixes
- Fixed a bug in error handling when a
SuspendToFutureAdapter
task throws an exception. (b/327629504)
Version 1.2.0-alpha02
August 9, 2023
androidx.concurrent:concurrent-futures:1.2.0-alpha02
and androidx.concurrent:concurrent-futures-ktx:1.2.0-alpha02
are released. Version 1.2.0-alpha02 contains these commits.
API Changes
- Added
SuspendToFutureAdapter
for writing suspend-ListenableFuture
bridges (Ia8a66)
Version 1.2.0-alpha01
February 22, 2023
androidx.concurrent:concurrent-futures:1.2.0-alpha01
and androidx.concurrent:concurrent-futures-ktx:1.2.0-alpha01
are released. Version 1.2.0-alpha01 contains these commits.
API Changes
ResolvableFuture
now has proper nullability annotations on its methods. (I2339f, b/236474470)
Version 1.1.0
Version 1.1.0
August 19, 2020
androidx.concurrent:concurrent-futures:1.1.0
and androidx.concurrent:concurrent-futures-ktx:1.1.0
are released with no changes since 1.1.0-rc01
. Version 1.1.0 contains these commits.
Major changes since 1.0.0
1.1.0
introduces Kotlin extensions to help convert between ListenableFuture and Kotlin Coroutines, now available withandroidx.concurrent:concurrent-futures-ktx:1.1.0
. This artifact is meant to be used withcom.google.guava:listenablefuture
as opposed to the full Guava library, which is a lightweight substitute for Guava that only contains ListenableFuture. For users of the full Guava library, you should use the official ListenableFuture extensions fromkotlinx.coroutines.kotlinx-coroutines-guava
instead.
Version 1.1.0-rc01
July 22, 2020
androidx.concurrent:concurrent-futures:1.1.0-rc01
and androidx.concurrent:concurrent-futures-ktx:1.1.0-rc01
are released with no changes since 1.1.0-beta01
. Version 1.1.0-rc01 contains these commits.
Version 1.1.0-beta01
June 24, 2020
androidx.concurrent:concurrent-futures:1.1.0-beta01
and androidx.concurrent:concurrent-futures-ktx:1.1.0-beta01
are released with no changes since 1.1.0-alpha01
. Version 1.1.0-beta01 contains these commits.
Version 1.1.0-alpha01
December 18, 2019
androidx.concurrent:concurrent-futures:1.1.0-alpha01
and androidx.concurrent:concurrent-futures-ktx:1.1.0-alpha01
are released. Version 1.1.0-alpha01 contains these commits. This is first release of androidx.concurrent:concurrent-futures-ktx
.
New features
- Kotlin extensions to help convert between ListenableFuture and Kotlin Coroutines are now available in
concurrent-futures-ktx
. This artifact is meant to be used withcom.google.guava:listenablefuture
as opposed to the full Guava library, which is a lightweight substitute for Guava that only containsListenableFuture
. For users of the full Guava library, you should use the official ListenableFuture extensions fromkotlinx.coroutines.kotlinx-coroutines-guava
instead.
API changes
- Adds a suspending
ListenableFuture.await()
extension which converts a ListenableFuture to a Kotlin Coroutine
Version 1.0.0
Version 1.0.0
October 9, 2019
androidx.concurrent:concurrent-futures:1.0.0
is released. Version 1.0.0 contains these commits.
Important features of 1.0.0
androidx.concurrent:concurrent-futures:1.0.0
provides CallbackToFutureAdapter
class, a minimalistic utility that allows to wrap callback based code and return instances of ListenableFuture
. It is useful for libraries that would like to expose asynchronous operations in their java APIs in a more elegant way than custom callbacks, but don’t do enough multithreading heavy-lifting to take a dependency on full guava or rx java due to library size concerns.
Version 1.0.0-rc01
August 7, 2019
androidx.concurrent:concurrent-futures:1.0.0-rc01
is released with no changes from 1.0.0-beta01
. The commits included in this version can be found here.
Concurrent-ListenableFuture Version 1.0.0-beta01
May 30th, 2019
androidx.concurrent:concurrent-listenablefuture:1.0.0-beta01
and androidx.concurrent:concurrent-listenablefuture-callback:1.0.0-beta01
are released. The commits included in this version can be found here.
These libraries provide a standalone equivalent to Guava’s ListenableFuture interface and an adapter for converting callbacks.
The previously-released androidx.concurrent:concurrent-futures
artifact, which provided a similar adapter and included the com.google.guava:listenablefuture
artifact, may be problematic for developers using toolchains -- such as Android Gradle Plugin 3.4.0 -- with strict dependency resolution matching. Developers who do not rely on the full Guava library are advised to switch to androidx.concurrent:concurrent-listenablefuture-callback
.
Version 1.0.0-beta01
May 7, 2019
androidx.concurrent:concurrent-futures:1.0.0-beta01
is released. The commits included in this version can be found here.
API changes
ResolvableFuture
andAbstractResolvableFuture
were hidden from public api in favorCallbackToFutureAdapter
that provides safer API.
Version 1.0.0-alpha03
December 17, 2018
androidx.concurrent:concurrent-futures 1.0.0-alpha03
is released.
New features
CallbackToFutureAdapter
was introduced. It’s a new, safer API to wrap a callback driven API intoListenableFuture
. Prefer it over usingResolvableFuture
.