Share via


AppSearchSession.OpenBlobForWrite Method

Definition

Opens a batch of AppSearch Blobs for writing.

[Android.Runtime.Register("openBlobForWrite", "(Ljava/util/Set;Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;)V", "", ApiSince=36)]
public void OpenBlobForWrite(System.Collections.Generic.ICollection<Android.App.AppSearch.AppSearchBlobHandle> handles, Java.Util.Concurrent.IExecutor executor, Java.Util.Functions.IConsumer callback);
[<Android.Runtime.Register("openBlobForWrite", "(Ljava/util/Set;Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;)V", "", ApiSince=36)>]
member this.OpenBlobForWrite : System.Collections.Generic.ICollection<Android.App.AppSearch.AppSearchBlobHandle> * Java.Util.Concurrent.IExecutor * Java.Util.Functions.IConsumer -> unit

Parameters

handles
ICollection<AppSearchBlobHandle>

The AppSearchBlobHandles that identifies the blobs.

executor
IExecutor

Executor on which to invoke the callback.

callback
IConsumer

Callback to receive the OpenBlobForWriteResponse.

Attributes

Remarks

Opens a batch of AppSearch Blobs for writing.

A "blob" is a large binary object. It is used to store a significant amount of data that is not searchable, such as images, videos, audio files, or other binary data. Unlike other fields in AppSearch, blobs are stored as blob files on disk rather than in memory, and use android.os.ParcelFileDescriptor to read and write. This allows for efficient handling of large, non-searchable content.

Once done writing, call #commitBlob to commit blob files.

This call will create a empty blob file for each given AppSearchBlobHandle, and a android.os.ParcelFileDescriptor of that blob file will be returned in the OpenBlobForWriteResponse.

If the blob file is already stored in AppSearch and committed. A failed AppSearchResult with error code AppSearchResult#RESULT_ALREADY_EXISTS will be associated with the AppSearchBlobHandle.

If the blob file is already stored in AppSearch but not committed. A android.os.ParcelFileDescriptor of that blob file will be returned for continue writing.

For given duplicate AppSearchBlobHandle, the same android.os.ParcelFileDescriptor pointing to the same blob file will be returned.

Pending blob files won't be lost or auto-commit if AppSearchSession closed. Pending blob files will be stored in disk rather than memory. You can re-open AppSearchSession and re-write the pending blob files.

A committed blob file will be considered as an orphan if no GenericDocument references it. Uncommitted pending blob files and orphan blobs files will be cleaned up if they has been created for an extended period (default is 1 week).

The returned OpenBlobForWriteResponse must be closed after use to avoid resource leaks. Failing to close it will result in system file descriptor exhaustion.

Java documentation for android.app.appsearch.AppSearchSession.openBlobForWrite(java.util.Set<android.app.appsearch.AppSearchBlobHandle>, java.util.concurrent.Executor, java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.OpenBlobForWriteResponse>>).

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

Applies to