- Migrate to RXJava 3
- Migrate Gradle script to Kotlin DSL
- Remove Butterknife dep in tests
- Migrate to maven-publish plugin
- Add InMemoryPreference class to aid in testing
- Raise min SDK version to 14
Promotes 2.0.1-beta1
to a stable release.
-
Fix: Improve handling for
null
values stored in preferences. -
Improvement: Update dependencies and tools.
Promotes 2.0.0-RC3
to a stable release. If you are migrating from v1, please refer to the changelog for earlier RC versions to see what has changed.
-
New: Add ability to clear preferences via
RxSharedPreferences
. -
Fix: The default value for
RxSharedPreferences#getObject
may not be null, but was incorrectly annotated as@Nullable
. This corrects the annotation to@NonNull
.
This release includes multiple breaking changes.
- New: Replace
Adapter
withConverter
. AConverter
is a simpler interface that only deals with serialization, and abstracts away the complexity of working withSharedPreferences
orSharedPreferences.Editor
.
/**
* Converts instances of {@code T} to be stored and retrieved as Strings in {@link
* SharedPreferences}.
*/
interface Converter<T> {
/**
* Deserialize to an instance of {@code T}. The input is retrieved from {@link
* SharedPreferences#getString(String, String)}.
*/
@NonNull T deserialize(@NonNull String serialized);
/**
* Serialize the {@code value} to a String. The result will be used with {@link
* SharedPreferences.Editor#putString(String, String)}.
*/
@NonNull String serialize(@NonNull T value);
}
-
New: Disallow null values from being emitted by the Preference observable. Specifically
RxSharedPreferences#getEnum
andRxSharedPreferences#getObject
do not allow null values to be used as a default value. -
New: Make
Preference#set
only accept non null values. Trying to callset
with a null value will now throw an exception. -
New: Make the
Set<String>
returned byRxSharedPreferences#getStringSet
unmodifiable. -
Improvement: Use
@RequiresApi
instead of@TargetApi
.
rx-preferences has been updated to support RxJava 2.0. The Preference
type is now an interface, but the core itself is mostly unchanged. 2.0.0-RC1
does not handle backpressure yet.
Because the release includes breaking API changes, we're changing the project's package name from com.f2prateek.rx.preferences
to com.f2prateek.rx.preferences2
. The maven group has also changed to com.f2prateek.rx.preferences2
. This should make it possible for large applications and libraries to migrate incrementally.
- Remove custom backpressure support in favor of RxJava 1.1's built-in buffer latest.
- Add support for backpressure.
- Use reasonable defaults for creating Preferences that store primitives.
Initial release.