Share via


Preferences 類別

定義

喜好設定數據的階層式集合中的節點。

[Android.Runtime.Register("java/util/prefs/Preferences", DoNotGenerateAcw=true)]
public abstract class Preferences : Java.Lang.Object
[<Android.Runtime.Register("java/util/prefs/Preferences", DoNotGenerateAcw=true)>]
type Preferences = class
    inherit Object
繼承
Preferences
衍生
屬性

備註

喜好設定數據的階層式集合中的節點。 這個類別可讓應用程式儲存和擷取使用者和系統喜好設定和設定數據。 此數據會持續儲存在實作相依備份存儲區中。 一般實作包括一般檔案、OS 特定的登錄、目錄伺服器和 SQL 資料庫。 此類別的使用者不需要擔心備份儲存區的詳細數據。

喜好設定節點有兩個不同的樹狀結構,一個用於使用者喜好設定,另一個用於系統喜好設定。 每個使用者都有個別的使用者喜好設定樹狀目錄,而指定系統中的所有用戶都會共用相同的系統喜好設定樹狀目錄。 「使用者」和「系統」的精確描述會因實作而異。 儲存在使用者喜好設定樹狀結構中的一般資訊可能包括字型選擇、色彩選擇或特定應用程式的慣用視窗位置和大小。 儲存在系統喜好設定樹狀結構中的一般資訊可能包含應用程式的安裝組態數據。

喜好設定樹狀結構中的節點會以與階層式文件系統中的目錄類似的方式命名。 喜好設定樹狀結構中的每個節點都有節點 名稱 (不一定是唯一的) 、唯一 的絕對路徑名稱,以及 相對於 每個上階的路徑名稱,包括本身。

根節點具有空字串的節點名稱, (“”) 。 所有其他節點都有任意節點名稱,在建立時指定。 此名稱的唯一限制是它不能是空字串,而且不能包含斜線字元 (『/』) 。

根節點的絕對路徑名稱為 "/"。 根節點的子系具有< 的"/" + 絕對路徑名稱;節點名稱>。 所有其他節點都有< 的絕對路徑名稱 ;父系的絕對路徑名稱> + "/" + <節點名稱>。 請注意,所有絕對路徑名稱都是以斜線字元開頭。

節點 n 的路徑名稱 與其上階 相對,只是必須 附加至 絕對路徑名稱的字串,才能形成 n 的絕對路徑名稱,如果存在) 移除,則初始斜線字元 (。 請注意: <ul><li>沒有相對路徑名稱以斜線字元開頭。 <li>每個節點相對於本身的路徑名稱都是空字串。 <li>每個節點相對於其父系的路徑名稱都是其節點名稱 (,但根節點沒有父節點) 。 <li>每個節點相對於根的路徑名稱都是其絕對路徑名稱,並移除初始斜線字元。 </ul>

請注意,最後: <ul><li>沒有路徑名稱包含多個連續斜線字元。 <li>沒有路徑名稱,但根目錄的絕對路徑名稱以斜線字元結尾。 <li>符合這兩個規則的任何字串都是有效的路徑名稱。 </ul>

允許修改喜好設定數據的所有方法以異步方式運作;它們可能會立即傳回,而變更最終會傳播到具有實作相依延遲的永續性備份存儲區。 方法 flush 可用來同步強制更新備份儲存區。 Java 虛擬機的正常終止不會造成擱置的更新遺失 -- 終止時不需要明確flush叫用,以確保擱置的更新會持續發生。

Preferences 物件讀取喜好設定的所有方法都需要叫用者提供預設值。 如果未設定任何值 ,或備份存儲區無法使用,則會傳回預設值。 目的是允許應用程式運作,即使備份儲存區變得無法使用,仍會稍微降低的功能。 有數種方法,例如 flush,具有語意,可防止它們在備份存儲區無法使用時運作。 一般應用程式應該不需要叫用上述任何方法,這可由宣告為擲 BackingStoreException回 的事實來識別。

這個類別中的方法可由單一 JVM 中的多個線程同時叫用,而不需要外部同步處理,結果就相當於某些序列執行。 如果多個將喜好設定數據儲存在相同備份存放區中的 JVM 同時使用這個類別,數據存放區將不會損毀,但不會對喜好設定數據的一致性做出其他保證。

這個類別包含匯出/匯入設施,允許將喜好設定「匯出」至 XML 檔,而代表喜好設定的 XML 檔會「匯入」回系統。 這項功能可用來備份所有或部分喜好設定樹狀結構,然後從備份還原。

XML 檔具有下列 DOCTYPE 宣告:

{@code
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
            }

請注意,導出或匯入喜好設定時不會存取系統 URI (http://java.sun.com/dtd/preferences.dtd);它只會做為字串來唯一識別 DTD,也就是:

{@code
<?xml version="1.0" encoding="UTF-8"?>

<!-- DTD for a Preferences tree. -->

<!-- The preferences element is at the root of an XML document
                    representing a Preferences tree. -->
<!ELEMENT preferences (root)>

<!-- The preferences element contains an optional version attribute,
                     which specifies version of DTD. -->
<!ATTLIST preferences EXTERNAL_XML_VERSION CDATA "0.0" >

<!-- The root element has a map representing the root's preferences
                    (if any), and one node for each child of the root (if any). -->
<!ELEMENT root (map, node*) >

<!-- Additionally, the root contains a type attribute, which
                    specifies whether it's the system or user root. -->
<!ATTLIST root
                         type (system|user) #REQUIRED >

<!-- Each node has a map representing its preferences (if any),
                    and one node for each child (if any). -->
<!ELEMENT node (map, node*) >

<!-- Additionally, each node has a name attribute -->
<!ATTLIST node
                         name CDATA #REQUIRED >

<!-- A map represents the preferences stored at a node (if any). -->
<!ELEMENT map (entry*) >

<!-- An entry represents a single preference, which is simply
                     a key-value pair. -->
<!ELEMENT entry EMPTY >
<!ATTLIST entry
                         key   CDATA #REQUIRED
                         value CDATA #REQUIRED >
            }

每個 Preferences 實作都必須有相關聯的 PreferencesFactory 實作。 每個 Java (TM) SE 實作都必須提供一些方法來指定 PreferencesFactory 用來產生根喜好設定節點的實作。 這可讓系統管理員將預設喜好設定實作取代為替代實作。

實作注意事項:在 Sun 的 JRE 中,實 PreferencesFactory 作的所在位置如下:

<老>

<li>

如果已定義系統屬性 java.util.prefs.PreferencesFactory ,則會將其視為實 PreferencesFactory 作介面之類別的完整名稱。 類別會載入並具現化;如果此程式失敗,則會擲回未指定的錯誤。

</李>

<li>

PreferencesFactory如果實作類別檔案已安裝在 的 jar 檔案中,java.lang.ClassLoader#getSystemClassLoader system class loader而且該 jar 檔案包含資源目錄中META-INF/services名為 java.util.prefs.PreferencesFactory 的提供者組態檔,則會取得該檔案中指定的第一個類別名稱。 如果提供多個這類 jar 檔案,將會使用第一個找到的檔案。 類別會載入並具現化;如果此程式失敗,則會擲回未指定的錯誤。

</李>

<li>

最後,如果上述系統屬性和延伸模組 jar 檔案都未提供,則會載入並具現化基礎平臺的系統全系統默認 PreferencesFactory 實作。

</李>

</老>

已在1.4中新增。

java.util.prefs.PreferencesJava 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據 中所述的詞彙使用。

建構函式

Preferences()

唯一建構函式。

Preferences(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

欄位

MaxKeyLength

允許作為索引鍵的字串長度上限, (80 個字元) 。

MaxNameLength

節點名稱的最大長度 (80 個字元) 。

MaxValueLength

允許 (8192 個字元) 的字串長度上限。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
IsUserNode

傳回這是否為用戶喜好設定節點。

JniIdentityHashCode

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
JniPeerMembers

喜好設定數據的階層式集合中的節點。

PeerReference

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

方法

AbsolutePath()

傳回這個喜好設定節點的絕對路徑名稱。

AddNodeChangeListener(INodeChangeListener)

註冊指定的接聽程式,以接收此 節點的節點變更事件

AddPreferenceChangeListener(IPreferenceChangeListener)

註冊指定的接聽程式,以接收此喜好設定節點的 喜好設定變更事件

ChildrenNames()

傳回這個喜好設定節點的子系名稱,相對於這個節點。

Clear()

拿掉此喜好設定節點 (索引鍵/值關聯) 的所有喜好設定。

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Dispose()

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
Dispose(Boolean)

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
ExportNode(Stream)

在指定的輸出數據流上發出 XML 檔,此檔代表此節點中包含的所有喜好設定 (,但不是其子系) 。

ExportNodeAsync(Stream)

喜好設定數據的階層式集合中的節點。

ExportSubtree(Stream)

發出 XML 檔,此檔代表這個節點及其所有子系中包含的所有喜好設定。

ExportSubtreeAsync(Stream)

喜好設定數據的階層式集合中的節點。

Flush()

強制變更此喜好設定節點的內容及其子系至永續性存放區。

FlushAsync()

喜好設定數據的階層式集合中的節點。

Get(String, String)

傳回與這個喜好設定節點中指定索引鍵相關聯的值。

GetBoolean(String, Boolean)

傳回這個喜好設定節點中與指定索引鍵相關聯的字串所代表的布爾值。

GetByteArray(String, Byte[])

傳回由這個喜好設定節點中指定索引鍵相關聯之字串所代表的位元組數位數組值。

GetDouble(String, Double)

傳回這個喜好設定節點中與指定索引鍵相關聯的字串所代表的雙精度浮點數。

GetFloat(String, Single)

傳回這個喜好設定節點中與指定索引鍵相關聯的字串所代表的浮點數。

GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetInt(String, Int32)

傳回這個喜好設定節點中與指定索引鍵相關聯的字串所代表的int值。

GetLong(String, Int64)

傳回由這個喜好設定節點中指定索引鍵相關聯之字串所代表的長值。

ImportPreferences(Stream)

匯入指定輸入數據流上 XML 檔所代表的所有喜好設定。

ImportPreferencesAsync(Stream)

喜好設定數據的階層式集合中的節點。

JavaFinalize()

當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。

(繼承來源 Object)
Keys()

傳回此喜好設定節點中具有相關聯值的所有索引鍵。

Name()

傳回這個喜好設定節點的名稱,相對於其父系。

Node(String)

傳回與這個節點相同樹狀結構中的具名喜好設定節點,如果尚未存在,請建立它及其任何上階。

NodeExists(String)

如果具名喜好設定節點存在於與這個節點相同的樹狀結構中,則會傳回 true。

Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
Parent()

傳回這個喜好設定節點的父代,如果這是根節點,則 null 傳回 。

Put(String, String)

將指定的值與此喜好設定節點中的指定索引鍵產生關聯。

PutBoolean(String, Boolean)

將代表指定布爾值的字串與這個喜好設定節點中的指定索引鍵產生關聯。

PutByteArray(String, Byte[])

將代表指定位元組陣列的字串與此喜好設定節點中的指定索引鍵產生關聯。

PutDouble(String, Double)

將代表指定雙精度浮點數的字串與此喜好設定節點中的指定索引鍵產生關聯。

PutFloat(String, Single)

將代表指定浮點數的字串與此喜好設定節點中的指定索引鍵產生關聯。

PutInt(String, Int32)

將代表指定 int 值的字串與此喜好設定節點中的指定索引鍵產生關聯。

PutLong(String, Int64)

建立字串的關聯,此字串代表指定的 long 值與這個喜好設定節點中指定的索引鍵。

Remove(String)

如果有任何設定節點,則移除與此喜好設定節點中指定索引鍵相關聯的值。

RemoveNode()

拿掉此喜好設定節點及其所有子系,使已移除節點中包含的任何喜好設定失效。

RemoveNodeChangeListener(INodeChangeListener)

拿掉指定的 NodeChangeListener,因此不再收到變更事件。

RemovePreferenceChangeListener(IPreferenceChangeListener)

拿掉指定的喜好設定變更接聽程式,因此不再收到喜好設定變更事件。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
Sync()

確保未來從這個喜好設定節點及其子系讀取會反映任何認可至永續性存放區的變更, (在叫用之前 sync ,從任何 VM) 。

SyncAsync()

喜好設定數據的階層式集合中的節點。

SystemNodeForPackage(Class)

<強警告:</強>式>在Android上,對應至「系統」和「使用者」喜好設定的喜好設定節點會儲存在無法存取應用程式的文件系統區段中。

SystemRoot()

<強警告:</強>式>在Android上,對應至「系統」和「使用者」喜好設定的喜好設定節點會儲存在無法存取應用程式的文件系統區段中。

ToArray<T>()

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
ToString()

傳回這個喜好設定節點的字串表示,就像由 expression:(this.isUserNode() ? "User" : "System") + " Preference Node: " + this.absolutePath() 計算一樣。

UnregisterFromRuntime()

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
UserNodeForPackage(Class)

<強警告:</強>式>在Android上,對應至「系統」和「使用者」喜好設定的喜好設定節點會儲存在無法存取應用程式的文件系統區段中。

UserRoot()

<強警告:</強>式>在Android上,對應至「系統」和「使用者」喜好設定的喜好設定節點會儲存在無法存取應用程式的文件系統區段中。

Wait()

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>。><

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<>

(繼承來源 Object)

明確介面實作

IJavaPeerable.Disposed()

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
IJavaPeerable.Finalized()

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

喜好設定數據的階層式集合中的節點。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

喜好設定數據的階層式集合中的節點。

GetJniTypeName(IJavaPeerable)

喜好設定數據的階層式集合中的節點。

適用於