


Lifecycle-aware components perform actions in response to a change in the lifecycle status of another component, such as activities and fragments. Additional features include a new storage interface that enables the underlying storage mechanism for Datastore to be switched out (we have provided implementations for java.io and okio), and we have also added support for Kotlin Multiplatform. In DataStore 1.1 alpha we added a widely requested feature: multi-process support which allows you to access the DataStore from multiple processes while providing data consistency guarantees between them.

The DataStore library is a robust data storage solution that addresses issues with SharedPreferences and provides a modern coroutines based API. This greatly simplifies the development process. As of WorkManager 2.8.0, the updateWork() API is the means of doing this without having to go through the process of manually canceling and enqueuing a new WorkRequest. This is often necessary in larger apps that frequently change constraints or need to update their workers on the fly. Now, WorkManager allows you to update a WorkRequest after you have already enqueued it. These APIs let you create a task and hand it off to WorkManager to run when the work constraints are met. The WorkManager library makes it easy to schedule deferrable, asynchronous tasks that must be run reliably for instance uploading backups or analytics.

These new features are available in Room 2.6-alpha with all library sources written in Kotlin and supports both the Java programming language and Kotlin code generation. In Room, we have added many brand-new features, such as the Upsert operation, which attempts to insert an entity when there is no uniqueness conflict or update the entity if there is a conflict, and support for using Kotlin value classes for KSP. Room is the recommended data persistence layer which provides an abstraction layer over SQLite, allowing for increased usability and safety over the platform. Most applications need to persist local state - whether it be caching results, managing local lists of user enter data, or powering data returned in the UI. App architecture libraries and components ensure that apps are robust, testable, and maintainable.
