Lingua

BlobStoreManager Classe

Definizione

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

[Android.Runtime.Register("android/app/blob/BlobStoreManager", ApiSince=30, DoNotGenerateAcw=true)]
public class BlobStoreManager : Java.Lang.Object
[<Android.Runtime.Register("android/app/blob/BlobStoreManager", ApiSince=30, DoNotGenerateAcw=true)>]
type BlobStoreManager = class
    inherit Object
Ereditarietà
BlobStoreManager
Attributi

Commenti

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

Le app possono pubblicare e accedere a un BLOB di dati usando un BlobHandle oggetto che può essere creato con BlobHandle#createWithSha256(byte[], CharSequence, long, String). Questo BlobHandle oggetto incapsula le informazioni seguenti usate per identificare i BLOB: <ul><li>BlobHandle#getSha256Digest()<li li>BlobHandle#getLabel()<>BlobHandle#getExpiryTimeMillis()<>BlobHandle#getTag()</ul> Per considerare identici due BlobHandle oggetti, tutte queste informazioni devono essere uguali.

Per contribuire a un nuovo BLOB di dati, un'app deve creare una sessione usando BlobStoreManager#createSession(BlobHandle) e quindi aprire questa sessione per la scrittura usando BlobStoreManager#openSession(long).

Il frammento di codice seguente illustra come creare e aprire una sessione per la scrittura:

final long sessionId = blobStoreManager.createSession(blobHandle);
                try (BlobStoreManager.Session session = blobStoreManager.openSession(sessionId)) {
                    try (OutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(
                            session.openWrite(offsetBytes, lengthBytes))) {
                        writeData(out);
                    }
                }

Se non è stato possibile scrivere tutti i dati in un singolo tentativo, le app possono chiudere questa sessione e riaprirla usando l'ID sessione ottenuto tramite BlobStoreManager#createSession(BlobHandle). Si noti che i dati della sessione sono persistenti e possono essere riaperti per completare il contributo ai dati, anche durante i riavvii del dispositivo.

Dopo aver scritto i dati nella sessione, è possibile eseguirne il commit tramite Session#commit(Executor, Consumer). Finché non viene eseguito il commit della sessione, i dati scritti nella sessione non verranno condivisi con alcuna app.

Una volta eseguito il commit di una sessione usando Session#commit(Executor, Consumer), tutti i dati scritti come parte di questa sessione sono sealed e non possono più essere modificati.

Prima di eseguire il commit della sessione, le app possono indicare quali app possono accedere ai dati forniti usando una o più delle modalità di accesso seguenti: <ul><li>Session#allowPackageAccess(String, byte[]) che consentirà a pacchetti specifici di accedere ai BLOB. <li>Session#allowSameSignatureAccess() che consentirà solo le app firmate con lo stesso certificato dell'app che ha contribuito all'accesso al BLOB. <li>Session#allowPublicAccess() che consentirà a qualsiasi app nel dispositivo di accedere al BLOB. </ul>

Il frammento di codice seguente illustra come specificare la modalità di accesso ed eseguire il commit della sessione:

try (BlobStoreManager.Session session = blobStoreManager.openSession(sessionId)) {
                    try (OutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(
                            session.openWrite(offsetBytes, lengthBytes))) {
                        writeData(out);
                    }
                    session.allowSameSignatureAccess();
                    session.allowPackageAccess(packageName, certificate);
                    session.commit(executor, callback);
                }

Le app che soddisfano almeno uno dei vincoli di modalità di accesso specificati dall'editore del BLOB di dati potranno accedervi.

Un BLOB di dati pubblicato senza specificare una di queste modalità di accesso verrà considerato privato e solo l'app che ha contribuito al BLOB di dati potrà accedervi. Ciò è ancora utile per l'integrità complessiva del sistema del dispositivo perché il sistema può provare a mantenere una copia del BLOB di dati su disco quando più app contribuiscono agli stessi dati.

È consigliabile che le app usino uno o Session#allowPackageAccess(String, byte[])Session#allowSameSignatureAccess() quando conoscono, in anticipo, il set di app con cui vogliono condividere i BLOB. Session#allowPublicAccess() è progettato per i dati di cui è stato eseguito il commit pubblicamente dalle librerie e dagli SDK.

Una volta eseguito il commit di un BLOB di dati con Session#commit(Executor, Consumer), è possibile accedervi usando BlobStoreManager#openBlob(BlobHandle), presupponendo che il chiamante soddisfi i vincoli di qualsiasi modalità di accesso associata a tale BLOB di dati. Un'app può acquisire un lease in un BLOB con BlobStoreManager#acquireLease(BlobHandle, int) e rilasciare il lease con BlobStoreManager#releaseLease(BlobHandle). Un BLOB non verrà eliminato dal sistema mentre è presente almeno un lease dell'app.

Il frammento di codice seguente illustra come accedere al BLOB di dati:

try (InputStream in = new ParcelFileDescriptor.AutoCloseInputStream(
                        blobStoreManager.openBlob(blobHandle)) {
                    useData(in);
                }

per android.app.blob.BlobStoreManager.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Costruttori

Nome Descrizione
BlobStoreManager(IntPtr, JniHandleOwnership)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

Proprietà

Nome Descrizione
Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniManagedPeerState

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
JniPeerMembers

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

LeasedBlobs

Restituisce l'oggetto BlobHandle BlobHandles corrispondente ai BLOB di dati su cui l'app chiamante ha attualmente un lease.

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
RemainingLeaseQuotaBytes

Restituisce le dimensioni rimanenti della quota per l'acquisizione di un lease (in byte) che indica la quantità rimanente di dati su cui un'app può acquisire un lease prima che il sistema inizi a rifiutare le richieste di lease.

ThresholdClass

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

ThresholdType

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

Metodi

Nome Descrizione
AbandonSession(Int64)

Abbandona una sessione esistente ed elimina tutti i dati scritti in tale sessione finora.

AcquireLease(BlobHandle, ICharSequence, Int64)

Acquisire un lease al BLOB rappresentato da blobHandle.

AcquireLease(BlobHandle, ICharSequence)

Acquisire un lease al BLOB rappresentato da blobHandle.

AcquireLease(BlobHandle, Int32, Int64)

Acquisire un lease al BLOB rappresentato da blobHandle.

AcquireLease(BlobHandle, Int32)

Acquisire un lease al BLOB rappresentato da blobHandle.

AcquireLease(BlobHandle, String, Int64)

Acquisire un lease al BLOB rappresentato da blobHandle.

AcquireLease(BlobHandle, String)

Acquisire un lease al BLOB rappresentato da blobHandle.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
CreateSession(BlobHandle)

Creare una nuova sessione usando l'oggetto specificato BlobHandle, restituendo un ID univoco che rappresenta la sessione.

Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
DisposeUnlessReferenced()

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
Equals(Object)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetHashCode()

Restituisce un valore di codice hash per l'oggetto .

(Ereditato da Object)
JavaFinalize()
Obsoleti.

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
OpenBlob(BlobHandle)

Apre un BLOB esistente per la lettura dall'archivio BLOB gestito dal sistema.

OpenSession(Int64)

Aprire una sessione esistente per eseguire attivamente il lavoro.

ReleaseLease(BlobHandle)

Rilasciare qualsiasi lease attivo al BLOB rappresentato dal blobHandle quale è attualmente detenuto dal chiamante.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto .

(Ereditato da Object)
UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IJavaPeerable.Disposed()

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
IJavaPeerable.Finalized()

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

(Ereditato da JavaObject)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Questa classe fornisce l'accesso all'archivio BLOB gestito dal sistema.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a