@@ -55,6 +55,7 @@ void onAny(LifecycleOwner source, Lifecycle.Event event) {
55
55
@ Nullable private Observer <T > liveObserver = null ;
56
56
@ Nullable private Observer <Iterable <T >> pausedObserver = null ;
57
57
private boolean lifecycleOwnerIsPaused = true ;
58
+ private boolean ignoreBackgroundEffects = false ;
58
59
59
60
MutableLiveQueue (WorkRunner effectsWorkRunner , int capacity ) {
60
61
this .effectsWorkRunner = effectsWorkRunner ;
@@ -76,6 +77,16 @@ public void setObserver(@Nonnull LifecycleOwner owner, @Nonnull Observer<T> live
76
77
setObserver (owner , liveEffectsObserver , null );
77
78
}
78
79
80
+ @ Override
81
+ public void setObserverIgnoringPausedEffects (
82
+ @ Nonnull LifecycleOwner owner , @ Nonnull Observer <T > liveEffectsObserver ) {
83
+ synchronized (lock ) {
84
+ setObserver (owner , liveEffectsObserver , null );
85
+ ignoreBackgroundEffects = true ;
86
+ pausedEffectsQueue .clear ();
87
+ }
88
+ }
89
+
79
90
@ Override
80
91
public void setObserver (
81
92
@ Nonnull LifecycleOwner lifecycleOwner ,
@@ -89,6 +100,7 @@ public void setObserver(
89
100
this .pausedObserver = pausedObserver ;
90
101
this .lifecycleOwnerIsPaused = true ;
91
102
lifecycleOwner .getLifecycle ().addObserver (new LifecycleObserverHelper ());
103
+ ignoreBackgroundEffects = false ;
92
104
}
93
105
}
94
106
@@ -110,7 +122,7 @@ public void clearObserver() {
110
122
void post (@ Nonnull final T data ) {
111
123
synchronized (lock ) {
112
124
if (lifecycleOwnerIsPaused ) {
113
- if (!pausedEffectsQueue .offer (data )) {
125
+ if (shouldQueuePausedEffects () && !pausedEffectsQueue .offer (data )) {
114
126
throw new IllegalStateException (
115
127
"Maximum effect queue size ("
116
128
+ pausedEffectsQueue .size ()
@@ -123,6 +135,10 @@ void post(@Nonnull final T data) {
123
135
}
124
136
}
125
137
138
+ private boolean shouldQueuePausedEffects () {
139
+ return !ignoreBackgroundEffects ;
140
+ }
141
+
126
142
private void onLifecycleChanged (Lifecycle .Event event ) {
127
143
switch (event ) {
128
144
case ON_RESUME :
0 commit comments