Memory leak detected by leak canary on device rotation.
rogamaral opened this issue · comments
public class LocationProvider {
public interface LocationProviderConsumer {
void onLocationUpdate(Location location);
void onLocationSettingsUnsuccessful();
}
private final CompositeDisposable disposable = new CompositeDisposable();
private final RxLocation rxLocation;
private final LocationRequest locationRequest;
private LocationProviderConsumer consumer;
public LocationProvider(RxLocation rxLocation) {
this.rxLocation = rxLocation;
this.locationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(5000);
}
public void attachConsumer(LocationProviderConsumer consumer) {
this.consumer = consumer;
startLocationUpdates();
}
public void detachConsumer() {
consumer = null;
disposable.clear();
}
public void startLocationUpdates(){
disposable.add(
rxLocation.settings().checkAndHandleResolution(locationRequest)
.flatMapObservable(this::getLocationObservable)
.subscribe(consumer::onLocationUpdate,
throwable -> Log.e("LocationProvider",
"Error fetching location updates",
throwable))
);
}
private Observable<Location> getLocationObservable(boolean success) {
if(success) {
return rxLocation.location().updates(locationRequest);
} else {
consumer.onLocationSettingsUnsuccessful();
return rxLocation.location().lastLocation()
.toObservable();
}
}
}
RxLocation and LocationProvider are instantiated in Navigation_Google Activity onCreate()
, this way
RxLocation rxLocation = new RxLocation(getApplicationContext());
rxLocation.setDefaultTimeout(15, TimeUnit.SECONDS);
locationProvider = new LocationProvider(rxLocation);
attachConsumer()
and detachConsumer()
are called by Navigation_Google in onStart()
and onStop()
.
Thanks for reporting. The problem should be fixed with the next update.
Sorry, but the issue seems not been fixed with 1.0.2
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * pt.rogerioamaral.ByMAP.Navigation has leaked:
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * GC ROOT com.google.android.gms.internal.zzary$zzb.zzaGN
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references com.google.android.gms.internal.zzary$6.zzbkA (anonymous subclass of com.google.android.gms.internal.zzary$zza)
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$$Lambda$1.arg$1 (anonymous implementation of com.google.android.gms.location.LocationListener)
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter.actual
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber.actual
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.actual
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver.parent
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.actual
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.actual
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references io.reactivex.internal.observers.LambdaObserver.onNext
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references pt.rogerioamaral.ByMAP.Util.LocationProvider$$Lambda$2.arg$1 (anonymous implementation of io.reactivex.functions.Consumer)
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * leaks pt.rogerioamaral.ByMAP.Navigation instance
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Retaining: 196 KB.
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Reference Key: 3643243f-b590-420c-acbe-4f7581de4d32
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Device: unknown Android Android SDK built for x86 sdk_google_phone_x86
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Android Version: 7.1.1 API: 25 LeakCanary: 1.5 00f37f5
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Durations: watch=35366ms, gc=128ms, heap dump=1924ms, analysis=23654ms
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Details:
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of com.google.android.gms.internal.zzary$zzb
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[120]@719836673 (0x2ae7d601)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaGN = com.google.android.gms.internal.zzary$6@725927984 (0x2b44c830)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mDescriptor = java.lang.String@717268160 (0x2ac0a4c0)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mObject = -1934214336
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mOwner = com.google.android.gms.internal.zzary$zzb@724786272 (0x2b335c60)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = com.google.android.gms.internal.zzary$zzb
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of com.google.android.gms.internal.zzary$6
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[156]@719990209 (0x2aea2dc1)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzbkA = com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$$Lambda$1@724793680 (0x2b337950)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzbkE = null
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzbkz = com.google.android.gms.location.LocationRequest@726177488 (0x2b4896d0)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaxf = com.google.android.gms.common.api.Api@720075136 (0x2aeb7980)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzazY = com.google.android.gms.common.api.Api$zzf@717252992 (0x2ac06980)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzK = false
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAh = java.lang.Object@724242576 (0x2b2b1090)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAi = com.google.android.gms.internal.zzaaf$zza@724786208 (0x2b335c20)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAj = java.lang.ref.WeakReference@724674136 (0x2b31a658)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAk = java.util.ArrayList@724674112 (0x2b31a640)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAl = null
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAm = java.util.concurrent.atomic.AtomicReference@724793488 (0x2b337890)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAn = null
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAo = true
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAp = false
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAq = null
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAr = null
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzaAs = false
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzair = com.google.android.gms.common.api.Status@725003688 (0x2b36ada8)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zzazt = null
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | zztj = java.util.concurrent.CountDownLatch@724793648 (0x2b337930)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = com.google.android.gms.internal.zzary$6
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = -1997205051
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$$Lambda$1
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[56]@718759297 (0x2ad76581)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | arg$1 = io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter@725709488 (0x2b4172b0)
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$$Lambda$1
03-20 19:00:46.573 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = -1893677286
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = 3776720187248809713
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[200]@718160273 (0x2ace4191)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | actual = io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber@726528080 (0x2b4df050)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | serial = io.reactivex.internal.disposables.SequentialDisposable@726528096 (0x2b4df060)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | value = 9223372036854775807
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[76]@718080385 (0x2acd0981)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | actual = io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver@726452760 (0x2b4cca18)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | s = io.reactivex.internal.subscriptions.SubscriptionHelper@717233808 (0x2ac01e90)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = 8094547886072529208
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[128]@718011649 (0x2acbfd01)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | actual = io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver@726444440 (0x2b4ca998)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | s = java.util.concurrent.atomic.AtomicReference@726583152 (0x2b4ec770)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | value = io.reactivex.internal.disposables.DisposableHelper@718754448 (0x2ad75290)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = -4606175640614850599
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[120]@718011393 (0x2acbfc01)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | done = false
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | fusionMode = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | id = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | parent = io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver@725762384 (0x2b424150)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | queue = null
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | value = io.reactivex.internal.disposables.DisposableHelper@718754448 (0x2ad75290)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = -2117620485640801370
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static CANCELLED = io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver[0]@718732416 (0x2ad6fc80)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static EMPTY = io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver[0]@718732432 (0x2ad6fc90)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[216]@717771681 (0x2ac853a1)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | actual = io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver@725594896 (0x2b3fb310)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | bufferSize = 128
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | cancelled = true
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | delayErrors = false
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | done = true
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | errors = io.reactivex.internal.util.AtomicThrowable@726522400 (0x2b4dda20)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | lastId = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | lastIndex = 0
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mapper = pt.rogerioamaral.ByMAP.Util.LocationProvider$$Lambda$1@726522464 (0x2b4dda60)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | maxConcurrency = 2147483647
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | observers = java.util.concurrent.atomic.AtomicReference@726522384 (0x2b4dda10)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | queue = null
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | s = io.reactivex.internal.operators.single.SingleToObservable$SingleToObservableObserver@726522368 (0x2b4dda00)
03-20 19:00:46.574 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | sources = null
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | uniqueId = 1
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | wip = 0
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | value = 0
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = 6576896619930983584
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[216]@717772033 (0x2ac85501)
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | actual = io.reactivex.internal.observers.LambdaObserver@726570464 (0x2b4e95e0)
03-20 19:00:46.576 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | bufferSize = 128
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | cancelled = true
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | delayError = false
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | done = false
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | error = null
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | outputFused = false
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | queue = io.reactivex.internal.queue.SpscLinkedArrayQueue@725594944 (0x2b3fb340)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | s = io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver@725762384 (0x2b424150)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | sourceMode = 0
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | worker = io.reactivex.android.schedulers.HandlerScheduler$HandlerWorker@726522416 (0x2b4dda30)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | value = 1
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of io.reactivex.internal.observers.LambdaObserver
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = -7251123623727029452
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[128]@718011137 (0x2acbfb01)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | onComplete = io.reactivex.internal.functions.Functions$11@717251184 (0x2ac06270)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | onError = pt.rogerioamaral.ByMAP.Util.LocationProvider$$Lambda$3@717251120 (0x2ac06230)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | onNext = pt.rogerioamaral.ByMAP.Util.LocationProvider$$Lambda$2@726522432 (0x2b4dda40)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | onSubscribe = io.reactivex.internal.functions.Functions$12@717251192 (0x2ac06278)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | value = io.reactivex.internal.disposables.DisposableHelper@718754448 (0x2ad75290)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = io.reactivex.internal.observers.LambdaObserver
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = -2100413097
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of pt.rogerioamaral.ByMAP.Util.LocationProvider$$Lambda$2
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = 3363128929984563248
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $change = null
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[72]@718079553 (0x2acd0641)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | arg$1 = pt.rogerioamaral.ByMAP.Navigation@723389312 (0x2b1e0b80)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = pt.rogerioamaral.ByMAP.Util.LocationProvider$$Lambda$2
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 0
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Instance of pt.rogerioamaral.ByMAP.Navigation
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static serialVersionUID = 4620463909946631139
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $change = null
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | static $classOverhead = byte[2008]@718069761 (0x2acce001)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | birdFix = com.google.android.gms.maps.model.LatLng@726353280 (0x2b4b4580)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | locationProvider = pt.rogerioamaral.ByMAP.Util.LocationProvider@726353880 (0x2b4b47d8)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mapManager = pt.rogerioamaral.ByMAP.Map.GoogleMapManager@726262816 (0x2b49e420)
03-20 19:00:46.577 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | myFix = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | positionMessage = pt.rogerioamaral.ByMAP.Messages.PositionMessage@725294272 (0x2b3b1cc0)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mDelegate = android.support.v7.app.AppCompatDelegateImplN@724865664 (0x2b349280)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mEatKeyUpEvent = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mResources = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mThemeId = 2131361857
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mCreated = true
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mFragments = android.support.v4.app.FragmentController@726112608 (0x2b479960)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mHandler = android.support.v4.app.FragmentActivity$1@726263808 (0x2b49e800)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mNextCandidateRequestIndex = 0
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mOptionsMenuInvalidated = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@726266256 (0x2b49f190)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mReallyStopped = true
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mRequestedPermissionsFromFragment = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mResumed = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mRetaining = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mStopped = true
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mStartedActivityFromFragment = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mStartedIntentSenderFromFragment = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mExtraDataMap = android.support.v4.util.SimpleArrayMap@726267672 (0x2b49f718)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mActionBar = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mActionModeTypeStarting = 0
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mActivityInfo = android.content.pm.ActivityInfo@724734736 (0x2b329310)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mActivityTransitionState = android.app.ActivityTransitionState@725268176 (0x2b3ab6d0)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mApplication = pt.rogerioamaral.ByMAP.ByMapApplication@718747392 (0x2ad73700)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mCalled = true
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mChangeCanvasToTranslucent = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mChangingConfigurations = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mComponent = android.content.ComponentName@724801520 (0x2b3397f0)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mConfigChangeFlags = 0
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mCurrentConfig = android.content.res.Configuration@724331816 (0x2b2c6d28)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mDecor = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mDefaultKeyMode = 0
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mDefaultKeySsb = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mDestroyed = true
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mDoReportFullyDrawn = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mEatKeyUpEvent = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mEmbeddedID = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mEnableDefaultActionBarUp = true
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mEnterTransitionListener = android.app.SharedElementCallback$1@1890596032 (0x70b034c0)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mExitTransitionListener = android.app.SharedElementCallback$1@1890596032 (0x70b034c0)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mFinished = true
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mFragments = android.app.FragmentController@726112672 (0x2b4799a0)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mHandler = android.os.Handler@726263872 (0x2b49e840)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mHasCurrentPermissionsRequest = false
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mIdent = 181230123
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mInstanceTracker = android.os.StrictMode$InstanceTracker@726112656 (0x2b479990)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mInstrumentation = android.app.Instrumentation@719772976 (0x2ae6dd30)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mIntent = android.content.Intent@724385736 (0x2b2d3fc8)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mLastNonConfigurationInstances = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mMainThread = android.app.ActivityThread@717242624 (0x2ac04100)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mManagedCursors = java.util.ArrayList@726267696 (0x2b49f730)
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mManagedDialogs = null
03-20 19:00:46.578 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mMenuInflater = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mParent = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mReferrer = java.lang.String@724413376 (0x2b2dabc0)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mResultCode = 0
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mResultData = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mResumed = false
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mSearchEvent = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mSearchManager = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mStartedActivity = false
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mStopped = true
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mTaskDescription = android.app.ActivityManager$TaskDescription@726263840 (0x2b49e820)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mTemporaryPause = false
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mTitle = java.lang.String@720360920 (0x2aefd5d8)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mTitleColor = 0
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mTitleReady = true
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mToken = android.os.BinderProxy@720486976 (0x2af1c240)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mTranslucentCallback = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mUiThread = java.lang.Thread@1965793120 (0x752b9f60)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mVisibleBehind = false
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mVisibleFromClient = true
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mVisibleFromServer = true
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mVoiceInteractor = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mWindow = com.android.internal.policy.PhoneWindow@725059872 (0x2b378920)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mWindowAdded = true
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mWindowManager = android.view.WindowManagerImpl@726267384 (0x2b49f5f8)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mInflater = com.android.internal.policy.PhoneLayoutInflater@725298912 (0x2b3b2ee0)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mOverrideConfiguration = null
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mResources = android.content.res.Resources@720447376 (0x2af12790)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mTheme = android.content.res.Resources$Theme@726112352 (0x2b479860)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mThemeResource = 2131361857
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | mBase = android.app.ContextImpl@724649008 (0x2b314430)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_klass_ = pt.rogerioamaral.ByMAP.Navigation
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | shadow$_monitor_ = 1205612658
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * Excluded Refs:
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Thread:FinalizerWatchdogDaemon (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Thread:main (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Thread:LeakCanary-Heap-Dump (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Class:java.lang.ref.WeakReference (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Class:java.lang.ref.SoftReference (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Class:java.lang.ref.PhantomReference (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Class:java.lang.ref.Finalizer (always)
03-20 19:00:46.579 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: | Class:java.lang.ref.FinalizerReference (always)
Are you sure, that you use the newest version?
03-20 19:00:46.572 3488-2211/pt.rogerioamaral.ByMAP D/LeakCanary: * references com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$$Lambda$1.arg$1 (anonymous implementation of com.google.android.gms.location.LocationListener)
This lambda does not exist anymore, I created a RxLocationListener
inner class, see here.
My dependencies section:
dependencies {
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:design:25.3.0'
compile 'com.google.android.gms:play-services-maps:10.2.0'
compile 'com.patloew.rxlocation:rxlocation:1.0.2'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.android.support:support-v4:25.3.0'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
}
Ah, sorry, I did not release the changes yet, because I'm still integrating code for #21. Please wait a little while longer, this will be released in v1.1.0 soon.
The fix is now released in v1.0.3 :)
Thanks. I am very grateful for the so quick fix.
Hey @patloew
I updated the to 1.0.3 but still get a leak
In com.alouanemed.app.debug:0.0.29-DEBUG:29.
* com.alouanemed.app.main.MainActivity has leaked:
* GC ROOT com.google.android.gms.internal.zzasg$zzb.zzaDf
* references com.google.android.gms.internal.zzabh.mListener
* references com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$RxLocationListener.emitter
* references io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter.actual
* references io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber.actual
* references io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.actual
* references io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.actual
* references io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onNext
* references com.alouanemed.app.main.MainPresenter$$Lambda$4.arg$1 (anonymous implementation of io.reactivex.functions.Consumer)
* leaks com.alouanemed.app.main.MainActivity instance
* Retaining: 3.3 MB.
* Reference Key: c6cd05f1-e582-4bcd-a1be-d8a607c3839b
* Device: LGE google Nexus 5 bullhead
* Android Version: 7.1.2 API: 25 LeakCanary: 1.5 00f37f5
* Durations: watch=5586ms, gc=166ms, heap dump=2842ms, analysis=129930ms
* Details:
* Instance of com.google.android.gms.internal.zzasg$zzb
| static $classOverhead = byte[248]@319244801 (0x13074a01)
| zzaDf = com.google.android.gms.internal.zzabh@320115232 (0x13149220)
| mDescriptor = java.lang.String@315390080 (0x12cc7880)
| mObject = 512209491504
| mOwner = com.google.android.gms.internal.zzasg$zzb@318296384 (0x12f8d140)
| shadow$_klass_ = com.google.android.gms.internal.zzasg$zzb
| shadow$_monitor_ = 0
* Instance of com.google.android.gms.internal.zzabh
| static $classOverhead = byte[144]@314949089 (0x12c5bde1)
| mListener = com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$RxLocationListener@318182208 (0x12f71340)
| zzaCX = com.google.android.gms.internal.zzabh$zza@318296224 (0x12f8d0a0)
| zzaCY = com.google.android.gms.internal.zzabh$zzb@318182272 (0x12f71380)
| shadow$_klass_ = com.google.android.gms.internal.zzabh
| shadow$_monitor_ = 0
* Instance of com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$RxLocationListener
| static $classOverhead = byte[120]@316116225 (0x12d78d01)
| emitter = io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter@319943896 (0x1311f4d8)
| shadow$_klass_ = com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$RxLocationListener
| shadow$_monitor_ = -2105598871
* Instance of io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter
| static serialVersionUID = 3776720187248809713
| static $classOverhead = byte[384]@316232705 (0x12d95401)
| actual = io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber@318247008 (0x12f81060)
| serial = io.reactivex.internal.disposables.SequentialDisposable@318247040 (0x12f81080)
| value = 9223372036854775803
| shadow$_klass_ = io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter
| shadow$_monitor_ = 0
* Instance of io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber
| static $classOverhead = byte[152]@319712993 (0x130e6ee1)
| actual = io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver@318340928 (0x12f97f40)
| s = io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter@319943896 (0x1311f4d8)
| shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber
| shadow$_monitor_ = 0
* Instance of io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver
| static serialVersionUID = 8094547886072529208
| static $classOverhead = byte[248]@318482177 (0x12fba701)
| actual = io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver@318117488 (0x12f61670)
| s = java.util.concurrent.atomic.AtomicReference@318181824 (0x12f711c0)
| value = io.reactivex.internal.schedulers.IoScheduler$EventLoopWorker@318340952 (0x12f97f58)
| shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver
| shadow$_monitor_ = 0
* Instance of io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver
| static serialVersionUID = 6576896619930983584
| static $classOverhead = byte[424]@321364993 (0x1327a401)
| actual = io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver@317170440 (0x12e7a308)
| bufferSize = 128
| cancelled = false
| delayError = false
| done = false
| error = null
| outputFused = false
| queue = io.reactivex.internal.queue.SpscLinkedArrayQueue@318117584 (0x12f616d0)
| s = io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver@318340928 (0x12f97f40)
| sourceMode = 0
| worker = io.reactivex.android.schedulers.HandlerScheduler$HandlerWorker@318181808 (0x12f711b0)
| value = 0
| shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver
| shadow$_monitor_ = 0
* Instance of io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver
| static $classOverhead = byte[152]@319959969 (0x131233a1)
| actual = io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver@320130032 (0x1314cbf0)
| done = false
| onAfterTerminate = io.reactivex.internal.functions.Functions$11@314578000 (0x12c01450)
| onComplete = io.reactivex.internal.functions.Functions$11@314578000 (0x12c01450)
| onError = io.reactivex.internal.functions.Functions$12@314578008 (0x12c01458)
| onNext = com.alouanemed.app.main.MainPresenter$$Lambda$4@318181712 (0x12f71150)
| s = io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver@318117488 (0x12f61670)
| shadow$_klass_ = io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver
| shadow$_monitor_ = 0
* Instance of com.alouanemed.app.main.MainPresenter$$Lambda$4
| static serialVersionUID = 4338679148099350195
| static $change = null
| static $classOverhead = byte[128]@316296193 (0x12da4c01)
| arg$1 = com.alouanemed.app.main.MainActivity@315583168 (0x12cf6ac0)
| shadow$_klass_ = com.alouanemed.app.main.MainPresenter$$Lambda$4
| shadow$_monitor_ = 0
* Instance of com.alouanemed.app.main.MainActivity
| static $assertionsDisabled = true
| static serialVersionUID = 1007393560961940246
| static $classOverhead = byte[4152]@316346369 (0x12db1001)
| static $change = null
| bottomBar = com.roughike.bottombar.BottomBar@317337600 (0x12ea3000)
| fragmentManager = android.support.v4.app.FragmentManagerImpl@315077680 (0x12c7b430)
| mmPLaceTypeType = android.support.v7.widget.AppCompatTextView@317228032 (0x12e88400)
| mDrawerLayout = android.support.v4.widget.DrawerLayout@316539904 (0x12de0400)