patloew / RxLocation

đź—ş [DEPRECATED] Reactive Location APIs Library for Android and RxJava 2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Memory leak detected by leak canary on device rotation.

rogamaral opened this issue · comments

device-2017-03-14-181239

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)