rx-preferences
是对Android
中SharedPreferences
的封装。
rx-preferences
在GitHub上的网址:https://github.com/f2prateek/rx-preferences
compile 'com.f2prateek.rx.preferences2:rx-preferences:2.0.0-RC2'
创建实例:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
RxSharedPreferences rxSharedPreferences = RxSharedPreferences.create(sharedPreferences);
RxSharedPreferences
都是一些public Preference<T> getXX(String key)
方法。有下面这些方法:
public Preference<Boolean> getBoolean(@NonNull String key)
public Preference<Boolean> getBoolean(@NonNull String key, @NonNull Boolean defaultValue)
public Preference<Float> getFloat(@NonNull String key)
public Preference<Float> getFloat(@NonNull String key, @NonNull Float defaultValue)
public Preference<Integer> getInteger(@NonNull String key)
public Preference<Integer> getInteger(@NonNull String key, @NonNull Integer defaultValue)
public Preference<Long> getLong(@NonNull String key)
public Preference<Long> getLong(@NonNull String key, @NonNull Long defaultValue)
public Preference<String> getString(@NonNull String key)
public Preference<String> getString(@NonNull String key, @NonNull String defaultValue)
public Preference<Set<String>> getStringSet(@NonNull String key)
public Preference<Set<String>> getStringSet(@NonNull String key, @NonNull Set<String> defaultValue)
public <T extends Enum<T>> Preference<T> getEnum(@NonNull String key, @NonNull T defaultValue, @NonNull Class<T> enumClass)
public <T> Preference<T> getObject(@NonNull String key, @Nullable T defaultValue, @NonNull Preference.Converter<T> converter)
Preference
接口的源码如下:
package com.f2prateek.rx.preferences2;
public interface Preference {
interface Converter {
@NonNull T deserialize(@NonNull String serialized);
@NonNull String serialize(@NonNull T value);
}
@NonNull String key();
@NonNull T defaultValue();
@NonNull T get();
void set(@NonNull T value);
boolean isSet();
void delete();
@CheckResult @NonNull Observable asObservable();
@CheckResult @NonNull Consumer super T> asConsumer();
}
获得对应key的值。
示例:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
RxSharedPreferences rxSharedPreferences = RxSharedPreferences.create(sharedPreferences);
Preference<Boolean> xxPreference = rxSharedPreferences.getBoolean("xx");
boolean isXX = xxPreference.get();
设置对应key的值。
示例:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
RxSharedPreferences rxSharedPreferences = RxSharedPreferences.create(sharedPreferences);
Preference<Boolean> xxPreference = rxSharedPreferences.getBoolean("xx");
xxPreference.set(true);
判断key的是否有值。
删除此key对应的值。
获得key。
转换成一个Observable
对象。
示例:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
RxSharedPreferences rxSharedPreferences = RxSharedPreferences.create(sharedPreferences);
Preference xxPreference = rxSharedPreferences.getBoolean("xx");
xxPreference.asObservable().subscribe(new Consumer() {
@Override
public void accept(@NonNull Boolean aBoolean) throws Exception {
//TODO
}
});
转换成一个Consumer
对象。
示例:
RxCompoundButton.checks(showWhatsNewView).subscribe(showWhatsNew.asAction());
这里RxCompoundButton
是RxBinding中的类。