AbstractPreferences 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此類別提供該類別的骨架實作 Preferences ,大幅簡化實作工作。
[Android.Runtime.Register("java/util/prefs/AbstractPreferences", DoNotGenerateAcw=true)]
public abstract class AbstractPreferences : Java.Util.Prefs.Preferences
[<Android.Runtime.Register("java/util/prefs/AbstractPreferences", DoNotGenerateAcw=true)>]
type AbstractPreferences = class
inherit Preferences
- 繼承
- 屬性
備註
此類別提供該類別的骨架實作 Preferences ,大幅簡化實作工作。
<強>本課程僅供實作者使用 Preferences 。 一般設施使用者 Preferences 無需查閱這些文件。 文件 Preferences 應該足夠了。</強壯>
實作者必須覆蓋九種抽象服務提供者介面(SPI)方法:#getSpi(String)、 #putSpi(String,String)#removeSpi(String)#childSpi(String)#removeNodeSpi()#keysSpi()#childrenNamesSpi()#syncSpi()#flushSpi()。 所有具體方法都明確規定如何在這些 SPI 方法之上實作。 如果預設實作因任何原因(如效能)不理想,實作者可自行決定覆蓋一項或多項具體方法。
SPI 方法在例外行為方面可分為三類。 該 getSpi 方法不應該拋出例外,但其實無所謂,因為這個方法拋出的任何例外都會被 #get(String,String)攔截,該異常會回傳指定的預設值給呼叫者。
removeNodeSpi, keysSpi, childrenNamesSpi, syncSpi
flushSpi與方法被指定要拋出 BackingStoreException,且如果實作無法執行該操作,則必須拋出這個檢查過的例外。 例外會向外傳播,導致相應的 API 方法失敗。
剩餘的 SPI 方法 #putSpi(String,String)則 #removeSpi(String)#childSpi(String) 有更複雜的例外行為。 他們沒有被指定要擲, BackingStoreException因為即使後備商店無法使用,他們通常也能遵守合約。 這是真的,因為他們不會回傳任何資訊,且其效果直到下一次呼叫 Preferences#flush() 或 Preferences#sync()之前都不需要永久化。 一般來說,這些 SPI 方法不應該拋出例外。 在某些實作中,這些呼叫甚至無法將請求操作排隊以供後續處理。 即使在這些情況下,通常也最好忽略召喚並返回,而不是拋出例外。 然而在此情況下,所有後續的 和 的呼喚flush()sync都應該返回false,因為返回true意味著所有先前的操作都已成功成為永久。
有一種putSpi, removeSpi and childSpi拋出例外:當呼叫者在底層作業系統上缺乏足夠的權限來執行所請求的操作時。 例如,當非特權使用者嘗試修改系統偏好時,大多數系統都會發生這種情況。 (所需權限會因實作不同而異。在某些實作中,他們有權修改檔案系統中某個目錄的內容;在其他情況下,則是修改登錄檔中某個金鑰內容的權利。)在這些情況下,通常不希望讓程式繼續執行,彷彿這些操作將來會變成永久。 雖然實施單位在這些情況下不必拋棄例外,但鼓勵他們這麼做。
SecurityException A會比較合適。
大多數 SPI 方法要求實作在偏好節點讀取或寫入資訊。 實作者應注意,可能有其他虛擬機同時從備份儲存庫中刪除了此節點。 如果節點已被刪除,實作方有責任重新建立該節點。
實作說明:在 Sun 的預設 Preferences 實作中,使用者的身份是繼承自底層作業系統,且在虛擬機的整個生命週期內不會改變。 已知伺服器端Preferences實作可能會讓使用者身份從請求變更,透過靜態Preferences實例隱含地傳遞給ThreadLocal方法。 這類實作的 作者強烈建議 在偏好設定存取時(例如透過 #get(String,String) or #put(String,String) 方法)判斷使用者,而非永久將使用者與每個 Preferences 實例關聯。 後者的行為與正常 Preferences 使用方式相衝突,會造成極大的混淆。
在 1.4 版本加入。
Java 文件 java.util.prefs.AbstractPreferences。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| AbstractPreferences(AbstractPreferences, String) |
建立一個偏好節點,其父節點與相對於父節點的指定名稱。 |
| AbstractPreferences(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
欄位
| 名稱 | Description |
|---|---|
| MaxKeyLength |
鍵碼允許的最大字串長度(80 個字元)。 (繼承來源 Preferences) |
| MaxNameLength |
節點名稱的最大長度(80 個字元)。 (繼承來源 Preferences) |
| MaxValueLength |
字串的最大長度(8192 字元)。 (繼承來源 Preferences) |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsRemoved |
回傳 |
| IsUserNode |
依照 中的 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
此類別提供該類別的骨架實作 |
| JniPeerMembers |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| Lock |
一個物件的監控器被用來鎖定此節點。 |
| NewNode |
如果該節點在建立此物件之前不存在於後備儲存庫,則應 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| AbsolutePath() |
依照 中的 |
| AddNodeChangeListener(INodeChangeListener) |
為此節點註冊一個 |
| AddPreferenceChangeListener(IPreferenceChangeListener) |
為此節點註冊一個 |
| CachedChildren() |
回傳該節點所有已知且未移除的子節點。 |
| ChildrenNames() |
依照 中的 |
| ChildrenNamesSpi() |
回傳此偏好節點子節點的名稱。 |
| ChildSpi(String) |
回傳該偏好節點的命名子節點,若尚未存在則建立該節點。 |
| Clear() |
依照 中的 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
此類別提供該類別的骨架實作 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
此類別提供該類別的骨架實作 |
| Equals(Object) |
此類別提供該類別的骨架實作 |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| ExportNode(Stream) |
依照 中的 |
| ExportNodeAsync(Stream) |
非同步會輸出一份 XML 文件,代表該節點中所有偏好,但不包含其後代。 (繼承來源 Preferences) |
| ExportSubtree(Stream) |
依照 中的 |
| ExportSubtreeAsync(Stream) |
非同步地會輸出一份 XML 文件,代表該節點及其所有後代節點中所有偏好設定。 (繼承來源 Preferences) |
| Flush() |
依照 中的 |
| FlushAsync() |
非同步強制將此偏好節點及其後代節點的任何變更強制至持久儲存。 (繼承來源 Preferences) |
| FlushSpi() |
此方法在節點鎖定時被呼叫。 |
| Get(String, String) |
依照 中的 |
| GetBoolean(String, Boolean) |
依照 中的 |
| GetByteArray(String, Byte[]) |
依照 中的 |
| GetChild(String) |
如果有命名子節點,則回 |
| GetDouble(String, Double) |
依照 中的 |
| GetFloat(String, Single) |
依照 中的 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetInt(String, Int32) |
依照 中的 |
| GetLong(String, Int64) |
依照 中的 |
| GetSpi(String) |
回傳該偏好節點上與指定鍵相關的值,或 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Keys() |
依照 中的 |
| KeysSpi() |
回傳所有在偏好節點中與其值相符的鍵。 |
| Name() |
依照 中的 |
| Node(String) |
依照 中的 |
| NodeExists(String) |
依照 中的 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Parent() |
依照 中的 |
| Put(String, String) |
依照 中的 |
| PutBoolean(String, Boolean) |
依照 中的 |
| PutByteArray(String, Byte[]) |
依照 中的 |
| PutDouble(String, Double) |
依照 中的 |
| PutFloat(String, Single) |
依照 中的 |
| PutInt(String, Int32) |
依照 中的 |
| PutLong(String, Int64) |
依照 中的 |
| PutSpi(String, String) |
將給定的鍵值關聯放入這個偏好節點。 |
| Remove(String) |
依照 中的 |
| RemoveNode() |
依照 中的 |
| RemoveNodeChangeListener(INodeChangeListener) |
將給定 |
| RemoveNodeSpi() |
移除此偏好節點,使其及其所包含的偏好無效。 |
| RemovePreferenceChangeListener(IPreferenceChangeListener) |
將給定 |
| RemoveSpi(String) |
在此偏好節點移除指定金鑰的關聯(如有)。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
此類別提供該類別的骨架實作 |
| Sync() |
依照 中的 |
| SyncAsync() |
非同步地將此偏好節點及其後代節點與持久儲存同步。 (繼承來源 Preferences) |
| SyncSpi() |
此方法在節點鎖定時被呼叫。 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳此偏好節點的絕對路徑名稱。 |
| 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() |
此類別提供該類別的骨架實作 |
| IJavaPeerable.Finalized() |
此類別提供該類別的骨架實作 |
| IJavaPeerable.JniObjectReferenceControlBlock |
此類別提供該類別的骨架實作 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此類別提供該類別的骨架實作 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此類別提供該類別的骨架實作 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此類別提供該類別的骨架實作 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
此類別提供該類別的骨架實作 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |