mcharmas / Android-ReactiveLocation

Small library that wraps Google Play Service API in brilliant RxJava Observables reducing boilerplate to minimum.
2.11k stars 312 forks source link

GoogleAPIConnectionSuspendedException #175

Closed Lir10 closed 6 years ago

Lir10 commented 6 years ago

Device: Lenovo K80M Android version: 4.4.4


pl.charmas.android.reactivelocation2.observables.BaseObservableOnSubscribe$ApiClientConnectionCallbacks.onConnectionSuspended (BaseObservableOnSubscribe.java:105)
com.google.android.gms.common.internal.zzad.zzce (Unknown Source)
com.google.android.gms.common.api.internal.zzbd.zzf (Unknown Source)
com.google.android.gms.common.api.internal.zzao.onConnectionSuspended (Unknown Source)
com.google.android.gms.common.api.internal.zzbl.onConnectionSuspended (Unknown Source)
com.google.android.gms.common.api.internal.zzw.onConnectionSuspended (Unknown Source)
com.google.android.gms.common.internal.zzab.onConnectionSuspended (Unknown Source)
com.google.android.gms.common.internal.zzh.handleMessage (Unknown Source)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:149)
android.app.ActivityThread.main (ActivityThread.java:5061)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:794)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:610)
dalvik.system.NativeStart.main (NativeStart.java)
Lir10 commented 6 years ago

Device: Huawei Mate 10 Pro Android 8.0

io.reactivex.exceptions.UndeliverableException: 
  at io.reactivex.plugins.RxJavaPlugins.onError (RxJavaPlugins.java:349)
  at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError (ObservableCreate.java:74)
  at pl.charmas.android.reactivelocation2.observables.BaseObservableOnSubscribe$ApiClientConnectionCallbacks.onConnectionSuspended (BaseObservableOnSubscribe.java:105)
  at com.google.android.gms.common.internal.zzad.zzce (Unknown Source:81)
  at com.google.android.gms.common.api.internal.zzbd.zzf (Unknown Source:66)
  at com.google.android.gms.common.api.internal.zzao.onConnectionSuspended (Unknown Source:12)
  at com.google.android.gms.common.api.internal.zzbl.onConnectionSuspended (Unknown Source:7)
  at com.google.android.gms.common.api.internal.zzw.onConnectionSuspended (Unknown Source:5)
  at com.google.android.gms.common.internal.zzab.onConnectionSuspended (Unknown Source:2)
  at com.google.android.gms.common.internal.zzh.handleMessage (Unknown Source:230)
  at android.os.Handler.dispatchMessage (Handler.java:108)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7380)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:926)

I'm getting this alot lately - in the previous versions of this library those exceptions were hidden i guess?

Lir10 commented 6 years ago

@mcharmas Possible solution:

on this line:

https://github.com/mcharmas/Android-ReactiveLocation/blob/520748033e358ebd818d223090d0f9aa2a2a5ad8/android-reactive-location/src/main/java/pl/charmas/android/reactivelocation2/observables/BaseObservableOnSubscribe.java#L105

 @Override
        public void onConnectionSuspended(int cause) {
            emitter.onError(new GoogleAPIConnectionSuspendedException(cause));
}

Should be changed to this:

 @Override
        public void onConnectionSuspended(int cause) {
            if (!emitter.isDisposed()) {
                 emitter.onError(new GoogleAPIConnectionSuspendedException(cause));
             }
}

this should be done in every emitter.onError call

mcharmas commented 6 years ago

Should be fixed in 2.1. Propagating to maven central. Should be available in few hours.