BlobStoreManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此類別提供系統管理的 blob 儲存庫存取權限。
[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
- 繼承
- 屬性
備註
此類別提供系統管理的 blob 儲存庫存取權限。
應用程式可以使用一個物件發佈並存取資料塊 BlobHandle ,該物件可用 BlobHandle#createWithSha256(byte[], CharSequence, long, String)建立。 此BlobHandle物件封裝了以下用於識別斑點的資訊:<ul><li>BlobHandle#getSha256Digest()<li li>BlobHandle#getLabel()<>BlobHandle#getExpiryTimeMillis()<li>BlobHandle#getTag()</ul> 兩個物件若被視為BlobHandle相同,所有這些資訊必須相等。
若要貢獻新的資料塊,應用程式需要先建立一個會BlobStoreManager#createSession(BlobHandle)話,然後開啟這個會話以撰寫。BlobStoreManager#openSession(long)
以下程式碼片段展示了如何建立並開啟寫作會話:
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);
}
}
若無法一次寫入所有資料,應用程式可關閉此會話,並利用透過 BlobStoreManager#createSession(BlobHandle)取得的會話 ID 重新開啟。 請注意,會話資料會被持久化,且可重新開啟以完成資料貢獻,即使是跨裝置重啟。
資料寫入會話後,可使用 Session#commit(Executor, Consumer)。 在工作階段提交之前,寫入該工作階段的資料不會與任何應用程式共享。
一旦以 承諾 Session#commit(Executor, Consumer)的會話,任何作為該會話一部分的資料都會被封存,且無法再修改。
在提交會話前,應用程式可透過以下一種或多種存取模式 <顯示哪些應用程式可存取貢獻資料:ul><li>Session#allowPackageAccess(String, byte[]) ,允許特定套件存取 blobs。
<
>
Session#allowSameSignatureAccess() LI 只能允許用與貢獻 BLOB 的應用程式相同的憑證簽署的應用程式存取。
<
>
Session#allowPublicAccess() LI 可以讓裝置上的任何應用程式都能存取 Blob。
</ul>
以下程式碼片段說明如何指定存取模式並提交會話:
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);
}
滿足資料塊發布者所指定至少一項存取模式限制的應用程式,將能夠存取該資料。
未指定任何存取模式的資料塊將被視為私有,只有貢獻資料塊的應用程式才被允許存取。 這對整體裝置系統健康仍有用處,因為系統可以嘗試在多個應用程式貢獻相同資料時,將一份資料塊保留在磁碟上。
強烈建議應用程式事先知道 Session#allowPackageAccess(String, byte[]) 想要分享 blob 的應用程式組合之一或 Session#allowSameSignatureAccess() 一組。
Session#allowPublicAccess() 是為從函式庫和 SDK 提交的公開資料所設計的。
一旦資料塊被 提交, Session#commit(Executor, Consumer)即可使用 BlobStoreManager#openBlob(BlobHandle),假設呼叫者滿足該資料塊所屬任意存取模式的限制。 應用程式可以取得一個 blob BlobStoreManager#acquireLease(BlobHandle, int) 的租約,並以 釋放該租約。BlobStoreManager#releaseLease(BlobHandle) 只要至少有一個應用程式在租用,blob 不會從系統中刪除。
以下程式碼片段展示了如何存取資料塊:
try (InputStream in = new ParcelFileDescriptor.AutoCloseInputStream(
blobStoreManager.openBlob(blobHandle)) {
useData(in);
}
Java 文件 android.app.blob.BlobStoreManager。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| BlobStoreManager(IntPtr, JniHandleOwnership) |
此類別提供系統管理的 blob 儲存庫存取權限。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| JniPeerMembers |
此類別提供系統管理的 blob 儲存庫存取權限。 |
| LeasedBlobs |
回傳 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| RemainingLeaseQuotaBytes |
回傳取得租約的剩餘配額大小(位元組),以表示應用程式在系統開始拒絕租約請求前,能取得租約的剩餘資料量。 |
| ThresholdClass |
此類別提供系統管理的 blob 儲存庫存取權限。 |
| ThresholdType |
此類別提供系統管理的 blob 儲存庫存取權限。 |
方法
| 名稱 | Description |
|---|---|
| AbandonSession(Int64) |
放棄現有的會話,並刪除目前寫入該會話的資料。 |
| AcquireLease(BlobHandle, ICharSequence, Int64) |
取得該 |
| AcquireLease(BlobHandle, ICharSequence) |
取得該 |
| AcquireLease(BlobHandle, Int32, Int64) |
取得該 |
| AcquireLease(BlobHandle, Int32) |
取得該 |
| AcquireLease(BlobHandle, String, Int64) |
取得該 |
| AcquireLease(BlobHandle, String) |
取得該 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| CreateSession(BlobHandle) |
使用給定 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| Equals(Object) |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| OpenBlob(BlobHandle) |
開啟一個現有的 blob 以讀取系統管理的 blob 儲存庫。 |
| OpenSession(Int64) |
開啟現有的工作階段來積極執行工作。 |
| ReleaseLease(BlobHandle) |
解除任何由該群組代表的有效租約,該區域 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此類別提供系統管理的 blob 儲存庫存取權限。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
此類別提供系統管理的 blob 儲存庫存取權限。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |