BlobStoreManager Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
| 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 |
| 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 |
| AcquireLease(BlobHandle, ICharSequence) |
Acquisire un lease al BLOB rappresentato da |
| AcquireLease(BlobHandle, Int32, Int64) |
Acquisire un lease al BLOB rappresentato da |
| AcquireLease(BlobHandle, Int32) |
Acquisire un lease al BLOB rappresentato da |
| AcquireLease(BlobHandle, String, Int64) |
Acquisire un lease al BLOB rappresentato da |
| AcquireLease(BlobHandle, String) |
Acquisire un lease al BLOB rappresentato da |
| 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 |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| 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 |