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 数据库。 此类的用户无需关注后备存储的详细信息。

有两个单独的首选项节点树,一个用于用户首选项,另一个用于系统首选项。 每个用户都有一个单独的用户首选项树,给定系统中的所有用户共享相同的系统首选项树。 “用户”和“系统”的精确描述因实现而异。 存储在用户首选项树中的典型信息可能包括字体选择、颜色选择或特定应用程序的首选窗口位置和大小。 存储在系统首选项树中的典型信息可能包括应用程序的安装配置数据。

首选项树中的节点的命名方式与分层文件系统中的目录类似。 首选项树中的每个节点都有一个 节点名称 (它不一定是唯一) 、唯一的 绝对路径名,以及 相对于 每个上级(包括自身)的路径名称。

根节点的节点名称为空字符串 (“”) 。 其他每个节点都有一个任意节点名称,在创建节点时指定。 此名称的唯一限制是它不能为空字符串,并且不能包含斜杠字符 ('/') 。

根节点的绝对路径名称为 "/"。 根节点的子节点的绝对路径名称 "/" + 为<节点名称>。 所有其他节点的绝对路径名称为 <parent 的绝对路径名称> + "/" + <节点名称>。 请注意,所有绝对路径名称都以斜杠字符开头。

节点 n 的路径名称相对于其上级 a 只是必须 追加到 的绝对路径名称才能形成 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 ,实现位置如下:

<老>

<李>

如果定义了系统属性 java.util.prefs.PreferencesFactory ,则它被视为实现 接口的类的 PreferencesFactory 完全限定名称。 类已加载并实例化;如果此过程失败,则会引发未指定的错误。

</李>

<李>

PreferencesFactory如果实现类文件已安装在对 java.lang.ClassLoader#getSystemClassLoader system class loader可见的 jar 文件中,并且该 jar 文件包含资源目录中META-INF/services名为 的java.util.prefs.PreferencesFactory提供程序配置文件,则采用该文件中指定的第一个类名。 如果提供了多个此类 jar 文件,将使用找到的第一个 jar 文件。 类已加载并实例化;如果此过程失败,则会引发未指定的错误。

</李>

<李>

最后,如果上述系统属性和扩展 jar 文件均未提供,则会加载并实例化基础平台的系统范围默认 PreferencesFactory 实现。

</李>

</老>

在 1.4 中添加。

java.util.prefs.PreferencesJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

Preferences()

唯一构造函数。

Preferences(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

字段

MaxKeyLength

允许作为键的最大字符串长度 (80 个字符) 。

MaxNameLength

节点名称的最大长度 () 80 个字符。

MaxValueLength

允许作为值的最大字符串长度 (8192 个字符) 。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsUserNode

返回此是否为用户首选项节点。

JniIdentityHashCode

首选项数据的分层集合中的节点。

(继承自 Object)
JniPeerMembers

首选项数据的分层集合中的节点。

PeerReference

首选项数据的分层集合中的节点。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

方法

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)

将表示指定 double 值的字符串与此首选项节点中的指定键相关联。

PutFloat(String, Single)

将表示指定浮点值的字符串与此首选项节点中的指定键相关联。

PutInt(String, Int32)

将表示指定 int 值的字符串与此首选项节点中的指定键相关联。

PutLong(String, Int64)

将表示指定长值的字符串与此首选项节点中的指定键相关联。

Remove(String)

删除与此首选项节点中的指定键关联的值(如果有)。

RemoveNode()

删除此首选项节点及其所有后代,使已删除的节点中包含的任何首选项失效。

RemoveNodeChangeListener(INodeChangeListener)

删除指定的 NodeChangeListener,使其不再接收更改事件。

RemovePreferenceChangeListener(IPreferenceChangeListener)

删除指定的首选项更改侦听器,使其不再接收首选项更改事件。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Sync()

确保将来从此首选项节点及其后代进行的读取反映了在调用之前 sync 提交到永久性存储 (从任何 VM) 进行的任何更改。

SyncAsync()

首选项数据的分层集合中的节点。

SystemNodeForPackage(Class)

<strong>WARNING:</strong> 在 Android 上,对应于“系统”和“用户”首选项的首选项节点存储在应用无法访问的文件系统部分中。

SystemRoot()

<strong>WARNING:</strong> 在 Android 上,对应于“系统”和“用户”首选项的首选项节点存储在应用无法访问的文件系统部分中。

ToArray<T>()

首选项数据的分层集合中的节点。

(继承自 Object)
ToString()

返回此首选项节点的字符串表示形式,就像由表达式计算一样:(this.isUserNode() ? "User" : "System") + " Preference Node: " + this.absolutePath()

UnregisterFromRuntime()

首选项数据的分层集合中的节点。

(继承自 Object)
UserNodeForPackage(Class)

<strong>WARNING:</strong> 在 Android 上,对应于“系统”和“用户”首选项的首选项节点存储在应用无法访问的文件系统部分中。

UserRoot()

<strong>WARNING:</strong> 在 Android 上,对应于“系统”和“用户”首选项的首选项节点存储在应用无法访问的文件系统部分中。

Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/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)

首选项数据的分层集合中的节点。

适用于