public abstract class

PreferenceDataStore

extends java.lang.Object

 java.lang.Object

↳androidx.preference.PreferenceDataStore

Gradle dependencies

compile group: 'androidx.preference', name: 'preference', version: '1.2.1'

  • groupId: androidx.preference
  • artifactId: preference
  • version: 1.2.1

Artifact androidx.preference:preference:1.2.1 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.preference:preference com.android.support:preference-v7

Androidx class mapping:

androidx.preference.PreferenceDataStore android.support.v7.preference.PreferenceDataStore

Overview

A data store interface to be implemented and provided to the Preference framework. This can be used to replace the default android.content.SharedPreferences, if needed.

In most cases you want to use android.content.SharedPreferences as it is automatically backed up and migrated to new devices. However, providing custom data store to preferences can be useful if your app stores its preferences in a local database, cloud, or they are device specific like "Developer settings". It might be also useful when you want to use the preferences UI but the data is not supposed to be stored at all because they are only valid per session.

Once a put method is called it is the full responsibility of the data store implementation to safely store the given values. Time expensive operations need to be done in the background to prevent from blocking the UI. You also need to have a plan on how to serialize the data in case the activity holding this object gets destroyed.

By default, all "put" methods throw java.lang.UnsupportedOperationException.

Summary

Constructors
publicPreferenceDataStore()

Methods
public booleangetBoolean(java.lang.String key, boolean defValue)

Retrieves a java.lang.Boolean value from the data store.

public floatgetFloat(java.lang.String key, float defValue)

Retrieves a java.lang.Float value from the data store.

public intgetInt(java.lang.String key, int defValue)

Retrieves an java.lang.Integer value from the data store.

public longgetLong(java.lang.String key, long defValue)

Retrieves a java.lang.Long value from the data store.

public java.lang.StringgetString(java.lang.String key, java.lang.String defValue)

Retrieves a java.lang.String value from the data store.

public java.util.Set<java.lang.String>getStringSet(java.lang.String key, java.util.Set<java.lang.String> defValues)

Retrieves a set of Strings from the data store.

public voidputBoolean(java.lang.String key, boolean value)

Sets a java.lang.Boolean value to the data store.

public voidputFloat(java.lang.String key, float value)

Sets a java.lang.Float value to the data store.

public voidputInt(java.lang.String key, int value)

Sets an java.lang.Integer value to the data store.

public voidputLong(java.lang.String key, long value)

Sets a java.lang.Long value to the data store.

public voidputString(java.lang.String key, java.lang.String value)

Sets a java.lang.String value to the data store.

public voidputStringSet(java.lang.String key, java.util.Set<java.lang.String> values)

Sets a set of java.lang.Strings to the data store.

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public PreferenceDataStore()

Methods

public void putString(java.lang.String key, java.lang.String value)

Sets a java.lang.String value to the data store.

Once the value is set the data store is responsible for holding it.

Parameters:

key: The name of the preference to modify
value: The new value for the preference

See also: PreferenceDataStore.getString(String, String)

public void putStringSet(java.lang.String key, java.util.Set<java.lang.String> values)

Sets a set of java.lang.Strings to the data store.

Once the value is set the data store is responsible for holding it.

Parameters:

key: The name of the preference to modify
values: The set of new values for the preference

See also: PreferenceDataStore.getStringSet(String, Set)

public void putInt(java.lang.String key, int value)

Sets an java.lang.Integer value to the data store.

Once the value is set the data store is responsible for holding it.

Parameters:

key: The name of the preference to modify
value: The new value for the preference

See also: PreferenceDataStore.getInt(String, int)

public void putLong(java.lang.String key, long value)

Sets a java.lang.Long value to the data store.

Once the value is set the data store is responsible for holding it.

Parameters:

key: The name of the preference to modify
value: The new value for the preference

See also: PreferenceDataStore.getLong(String, long)

public void putFloat(java.lang.String key, float value)

Sets a java.lang.Float value to the data store.

Once the value is set the data store is responsible for holding it.

Parameters:

key: The name of the preference to modify
value: The new value for the preference

See also: PreferenceDataStore.getFloat(String, float)

public void putBoolean(java.lang.String key, boolean value)

Sets a java.lang.Boolean value to the data store.

Once the value is set the data store is responsible for holding it.

Parameters:

key: The name of the preference to modify
value: The new value for the preference

See also: PreferenceDataStore.getBoolean(String, boolean)

public java.lang.String getString(java.lang.String key, java.lang.String defValue)

Retrieves a java.lang.String value from the data store.

Parameters:

key: The name of the preference to retrieve
defValue: Value to return if this preference does not exist in the storage

Returns:

The value from the data store or the default return value

See also: PreferenceDataStore.putString(String, String)

public java.util.Set<java.lang.String> getStringSet(java.lang.String key, java.util.Set<java.lang.String> defValues)

Retrieves a set of Strings from the data store.

Parameters:

key: The name of the preference to retrieve
defValues: Values to return if this preference does not exist in the storage

Returns:

The values from the data store or the default return values

See also: PreferenceDataStore.putStringSet(String, Set)

public int getInt(java.lang.String key, int defValue)

Retrieves an java.lang.Integer value from the data store.

Parameters:

key: The name of the preference to retrieve
defValue: Value to return if this preference does not exist in the storage

Returns:

The value from the data store or the default return value

See also: PreferenceDataStore.putInt(String, int)

public long getLong(java.lang.String key, long defValue)

Retrieves a java.lang.Long value from the data store.

Parameters:

key: The name of the preference to retrieve
defValue: Value to return if this preference does not exist in the storage

Returns:

The value from the data store or the default return value

See also: PreferenceDataStore.putLong(String, long)

public float getFloat(java.lang.String key, float defValue)

Retrieves a java.lang.Float value from the data store.

Parameters:

key: The name of the preference to retrieve
defValue: Value to return if this preference does not exist in the storage

Returns:

The value from the data store or the default return value

See also: PreferenceDataStore.putFloat(String, float)

public boolean getBoolean(java.lang.String key, boolean defValue)

Retrieves a java.lang.Boolean value from the data store.

Parameters:

key: The name of the preference to retrieve
defValue: Value to return if this preference does not exist in the storage

Returns:

the value from the data store or the default return value

See also: PreferenceDataStore.getBoolean(String, boolean)

Source

/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.preference;

import androidx.annotation.Nullable;

import java.util.Set;

/**
 * A data store interface to be implemented and provided to the {@link Preference} framework.
 * This can be used to replace the default {@link android.content.SharedPreferences}, if needed.
 *
 * <p>In most cases you want to use {@link android.content.SharedPreferences} as it is
 * automatically backed up and migrated to new devices. However, providing custom data store to
 * preferences can be useful if your app stores its preferences in a local database, cloud, or
 * they are device specific like "Developer settings". It might be also useful when you want to
 * use the preferences UI but the data is not supposed to be stored at all because they are only
 * valid per session.
 *
 * <p>Once a put method is called it is the full responsibility of the data store implementation
 * to safely store the given values. Time expensive operations need to be done in the background
 * to prevent from blocking the UI. You also need to have a plan on how to serialize the data in
 * case the activity holding this object gets destroyed.
 *
 * <p>By default, all "put" methods throw {@link UnsupportedOperationException}.
 *
 * @see Preference#setPreferenceDataStore(PreferenceDataStore)
 * @see PreferenceManager#setPreferenceDataStore(PreferenceDataStore)
 */
public abstract class PreferenceDataStore {

    /**
     * Sets a {@link String} value to the data store.
     *
     * <p>Once the value is set the data store is responsible for holding it.
     *
     * @param key   The name of the preference to modify
     * @param value The new value for the preference
     * @see #getString(String, String)
     */
    public void putString(String key, @Nullable String value) {
        throw new UnsupportedOperationException("Not implemented on this data store");
    }

    /**
     * Sets a set of {@link String}s to the data store.
     *
     * <p>Once the value is set the data store is responsible for holding it.
     *
     * @param key    The name of the preference to modify
     * @param values The set of new values for the preference
     * @see #getStringSet(String, Set)
     */
    public void putStringSet(String key, @Nullable Set<String> values) {
        throw new UnsupportedOperationException("Not implemented on this data store");
    }

    /**
     * Sets an {@link Integer} value to the data store.
     *
     * <p>Once the value is set the data store is responsible for holding it.
     *
     * @param key   The name of the preference to modify
     * @param value The new value for the preference
     * @see #getInt(String, int)
     */
    public void putInt(String key, int value) {
        throw new UnsupportedOperationException("Not implemented on this data store");
    }

    /**
     * Sets a {@link Long} value to the data store.
     *
     * <p>Once the value is set the data store is responsible for holding it.
     *
     * @param key   The name of the preference to modify
     * @param value The new value for the preference
     * @see #getLong(String, long)
     */
    public void putLong(String key, long value) {
        throw new UnsupportedOperationException("Not implemented on this data store");
    }

    /**
     * Sets a {@link Float} value to the data store.
     *
     * <p>Once the value is set the data store is responsible for holding it.
     *
     * @param key   The name of the preference to modify
     * @param value The new value for the preference
     * @see #getFloat(String, float)
     */
    public void putFloat(String key, float value) {
        throw new UnsupportedOperationException("Not implemented on this data store");
    }

    /**
     * Sets a {@link Boolean} value to the data store.
     *
     * <p>Once the value is set the data store is responsible for holding it.
     *
     * @param key   The name of the preference to modify
     * @param value The new value for the preference
     * @see #getBoolean(String, boolean)
     */
    public void putBoolean(String key, boolean value) {
        throw new UnsupportedOperationException("Not implemented on this data store");
    }

    /**
     * Retrieves a {@link String} value from the data store.
     *
     * @param key      The name of the preference to retrieve
     * @param defValue Value to return if this preference does not exist in the storage
     * @return The value from the data store or the default return value
     * @see #putString(String, String)
     */
    @Nullable
    public String getString(String key, @Nullable String defValue) {
        return defValue;
    }

    /**
     * Retrieves a set of Strings from the data store.
     *
     * @param key       The name of the preference to retrieve
     * @param defValues Values to return if this preference does not exist in the storage
     * @return The values from the data store or the default return values
     * @see #putStringSet(String, Set)
     */
    @Nullable
    public Set<String> getStringSet(String key, @Nullable Set<String> defValues) {
        return defValues;
    }

    /**
     * Retrieves an {@link Integer} value from the data store.
     *
     * @param key      The name of the preference to retrieve
     * @param defValue Value to return if this preference does not exist in the storage
     * @return The value from the data store or the default return value
     * @see #putInt(String, int)
     */
    public int getInt(String key, int defValue) {
        return defValue;
    }

    /**
     * Retrieves a {@link Long} value from the data store.
     *
     * @param key      The name of the preference to retrieve
     * @param defValue Value to return if this preference does not exist in the storage
     * @return The value from the data store or the default return value
     * @see #putLong(String, long)
     */
    public long getLong(String key, long defValue) {
        return defValue;
    }

    /**
     * Retrieves a {@link Float} value from the data store.
     *
     * @param key      The name of the preference to retrieve
     * @param defValue Value to return if this preference does not exist in the storage
     * @return The value from the data store or the default return value
     * @see #putFloat(String, float)
     */
    public float getFloat(String key, float defValue) {
        return defValue;
    }

    /**
     * Retrieves a {@link Boolean} value from the data store.
     *
     * @param key      The name of the preference to retrieve
     * @param defValue Value to return if this preference does not exist in the storage
     * @return the value from the data store or the default return value
     * @see #getBoolean(String, boolean)
     */
    public boolean getBoolean(String key, boolean defValue) {
        return defValue;
    }
}