MultiProcessDataStoreFactory
public static class MultiProcessDataStoreFactory
Summary
Public fields |
|
|---|---|
static @NonNull MultiProcessDataStoreFactory |
Public methods |
|
|---|---|
final @NonNull DataStore<@NonNull T> |
<T extends Object> create(Create an instance of MultiProcessDataStore, which provides cross-process eventual consistency. |
final @NonNull DataStore<@NonNull T> |
<T extends Object> create(Create an instance of MultiProcessDataStore, which provides cross-process eventual consistency. |
Public fields
Public methods
create
public final @NonNull DataStore<@NonNull T> <T extends Object> create(
@NonNull Storage<@NonNull T> storage,
ReplaceFileCorruptionHandler<@NonNull T> corruptionHandler,
@NonNull List<@NonNull DataMigration<@NonNull T>> migrations,
@NonNull CoroutineScope scope
)
Create an instance of MultiProcessDataStore, which provides cross-process eventual consistency. Never create more than one instance of DataStore for a given file in the same process; doing so can break all DataStore functionality. You should consider managing your DataStore instance for each file as a singleton. If there are multiple DataStores active for a given file in the same process, DataStore will throw IllegalStateException when reading or updating data. A DataStore is considered active as long as its scope is active. Having multiple instances, each for a different file, in the same process is OK.
T is the type DataStore acts on. The type T must be immutable. Mutating a type used in DataStore invalidates any guarantees that DataStore provides and will result in potentially serious, hard-to-catch bugs. We strongly recommend using protocol buffers: https://developers.google.com/protocol-buffers/docs/javatutorial - which provides immutability guarantees, a simple API and efficient serialization.
| Parameters | |
|---|---|
@NonNull Storage<@NonNull T> storage |
Storage to handle file reads and writes used with DataStore. The type T must be immutable. The storage must operate on the same file as the one passed in {@link produceFile}. |
ReplaceFileCorruptionHandler<@NonNull T> corruptionHandler |
The |
@NonNull List<@NonNull DataMigration<@NonNull T>> migrations |
Migrations are run before any access to data can occur. Migrations must be idempotent. |
@NonNull CoroutineScope scope |
The scope in which IO operations and transform functions will execute. |
create
public final @NonNull DataStore<@NonNull T> <T extends Object> create(
@NonNull Serializer<@NonNull T> serializer,
ReplaceFileCorruptionHandler<@NonNull T> corruptionHandler,
@NonNull List<@NonNull DataMigration<@NonNull T>> migrations,
@NonNull CoroutineScope scope,
@NonNull Function0<@NonNull File> produceFile
)
Create an instance of MultiProcessDataStore, which provides cross-process eventual consistency. Never create more than one instance of DataStore for a given file in the same process; doing so can break all DataStore functionality. You should consider managing your DataStore instance for each file as a singleton. If there are multiple DataStores active for a given file in the same process, DataStore will throw IllegalStateException when reading or updating data. A DataStore is considered active as long as its scope is active. Having multiple instances, each for a different file, in the same process is OK.
T is the type DataStore acts on. The type T must be immutable. Mutating a type used in DataStore invalidates any guarantees that DataStore provides and will result in potentially serious, hard-to-catch bugs. We strongly recommend using protocol buffers: https://developers.google.com/protocol-buffers/docs/javatutorial - which provides immutability guarantees, a simple API and efficient serialization.
| Parameters | |
|---|---|
@NonNull Serializer<@NonNull T> serializer |
Serializer for the type T used with DataStore. The type T must be immutable. |
ReplaceFileCorruptionHandler<@NonNull T> corruptionHandler |
The {@link androidx.datastore.core.handlers.ReplaceFileCorruptionHandler} is invoked if DataStore encounters a |
@NonNull List<@NonNull DataMigration<@NonNull T>> migrations |
Migrations are run before any access to data can occur. Migrations must be idempotent. |
@NonNull CoroutineScope scope |
The scope in which IO operations and transform functions will execute. |
@NonNull Function0<@NonNull File> produceFile |
Function which returns the file that the new DataStore will act on. The function must return the same path every time. No two instances of DataStore should act on the same file at the same time in the same process. |