Skip to content

Instantly share code, notes, and snippets.

@luks91
Last active April 29, 2018 18:05
Show Gist options
  • Save luks91/3dd006455ac23996a1c75545350a4e9b to your computer and use it in GitHub Desktop.
Save luks91/3dd006455ac23996a1c75545350a4e9b to your computer and use it in GitHub Desktop.
private fun sharedPreferenceValues(preferences: SharedPreferences, key: String): Flowable<String> =
Flowable.create({ emitter ->
val emitCurrentKey = { emitter.onNext(preferences.getString(key, "")) }
val preferencesListener = SharedPreferences.OnSharedPreferenceChangeListener { _, updatedKey ->
if (TextUtils.equals(key, updatedKey)) {
emitCurrentKey()
}
}
preferences.registerOnSharedPreferenceChangeListener(preferencesListener)
emitCurrentKey()
emitter.setCancellable { preferences.unregisterOnSharedPreferenceChangeListener(preferencesListener) }
}, BackpressureStrategy.LATEST)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment