diff --git a/src/main/java/ru/touchin/roboswag/core/observables/storable/Storable.java b/src/main/java/ru/touchin/roboswag/core/observables/storable/Storable.java index bea1940..b11b5f7 100644 --- a/src/main/java/ru/touchin/roboswag/core/observables/storable/Storable.java +++ b/src/main/java/ru/touchin/roboswag/core/observables/storable/Storable.java @@ -23,9 +23,11 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import ru.touchin.roboswag.core.log.LcGroup; import ru.touchin.roboswag.core.observables.ObservableResult; +import ru.touchin.roboswag.core.observables.OnSubscribeRefCountWithCacheTime; import ru.touchin.roboswag.core.observables.RxUtils; import ru.touchin.roboswag.core.observables.storable.builders.MigratableStorableBuilder; import ru.touchin.roboswag.core.observables.storable.builders.NonNullStorableBuilder; @@ -56,6 +58,8 @@ public class Storable { public static final LcGroup STORABLE_LC_GROUP = new LcGroup("STORABLE"); + private static final long CACHE_TIME = TimeUnit.SECONDS.toMillis(5); + @NonNull private final TKey key; @NonNull @@ -155,7 +159,9 @@ public class Storable { .subscribeOn(storeScheduler) .concatWith(newStoreValueEvent) .map(storeObject -> returnDefaultValueIfNull(storeObject, defaultValue)); - return observeStrategy == ObserveStrategy.CACHE_STORE_VALUE ? result.replay(1).refCount() : result; + return observeStrategy == ObserveStrategy.CACHE_STORE_VALUE + ? Observable.create(new OnSubscribeRefCountWithCacheTime<>(result.replay(1), CACHE_TIME, TimeUnit.MILLISECONDS)) + : result; } @NonNull @@ -176,7 +182,9 @@ public class Storable { }) .subscribeOn(storeScheduler); - return observeStrategy == ObserveStrategy.CACHE_ACTUAL_VALUE ? result.replay(1).refCount() : result; + return observeStrategy == ObserveStrategy.CACHE_ACTUAL_VALUE + ? Observable.create(new OnSubscribeRefCountWithCacheTime<>(result.replay(1), CACHE_TIME, TimeUnit.MILLISECONDS)) + : result; } /** @@ -254,7 +262,8 @@ public class Storable { } catch (final RuntimeException throwable) { STORABLE_LC_GROUP.assertion(throwable); } - }); + }) + .subscribeOn(storeScheduler); }); }