This is a reactive SharedPreferences library for Kotlin
- allows to integrate & manage your preferences with RxJava
- easily stores primitives, enums and other serializable objects
dependencies {
implementation 'com.vinted:preferx:1.2.0'
}Library supports default SharedPreferences types with default fallback values when preference was not yet set or was cleared.
sharedPreferences.intPreference("counter", 0)
sharedPreferences.stringPreference("string", "")
sharedPreferences.booleanPreference("seen", false)
sharedPreferences.longPreference("timestamp", 0L)
It also allows easy storing of enums and objects.
sharedPreferences.enumPreference("notifications", Frequency.ALL)
sharedPreferences.objectPreference(
name = "current_user"
defaultValue = User.ANONYMOUS,
serializer = someSerializer,
clazz = User::class
)class ExampleActivity : Activity {
private val sharedPreferences by lazy {
getSharedPreferences("app-pref", Context.MODE_PRIVATE)
}
private val sessionCounter : IntPreference by lazy {
sharedPreferences.intPreference("counter", 0)
}
@Override
public fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity)
val incrementedCount = sessionCounter.get() + 1
sessionCounter.set(incrementedCount)
counter_view.text = "Application was started $incrementedCount times"
}
}class ExampleActivity : Activity {
...
private var disposable: Disposable? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Observable.just(stringPreference.get())
.concatWith(stringPreference.onChangeObservable)
.subscribe {
text_view.text = it
}
}.apply { disposable = this }
}
override fun onDestroy() {
disposable?.dispose()
super.onDestroy()
}
...
}For more usage examples see:
- When
EnumSerializerfails to resolve enum value for any reason it will fallback to default value - When using
EntitySerializerone must ensure that it returns value. In case ofnullit will fallback to default value.