Also nach dem Betrachten anderer Antworten auf hier die gleiche Frage zu lösen sieht es nicht aus wie die Lösungen funktionieren. Hier ist der Fehler, den ich bekomme. Ich habe meine RxJava-Implementierung unter newThread()
und den Observer unter mainThread()
.Asynchrone RxJava Subscription wirft immer noch NetworkOnMainThreadException
Also meine erste Observable emittiert ein Observable>. Ich wiederhole es mit flatMapObservable
und verwende jede ganze Zahl, um einzelne Nachrichten als Observable zu erhalten.
Blick auf meine Http Log Ich bekomme die Liste der ganzen Zahlen und die erste Nachricht. Dann bekomme ich einen Fehler.
Jede Hilfe würde sehr geschätzt werden.
mMainProvider.getNewestHackerStories()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(Throwable::printStackTrace)
.flatMapIterable(ids -> ids)
.flatMap(id -> mMainProvider.getHackerNewsItem(id))
.subscribe(hackerNewsItem -> newStoryList.add(hackerNewsItem));
17-12017/com.androidtitan.magicmirror W/System.err: android.os.NetworkOnMainThreadException
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.shutdownAndFreeSslNative(OpenSSLSocketImpl.java:1237)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.close(OpenSSLSocketImpl.java:1232)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.internal.Util.closeQuietly(Util.java:105)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.internal.http.StreamAllocation.deallocate(StreamAllocation.java:259)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.internal.http.StreamAllocation.streamFailed(StreamAllocation.java:306)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.internal.http.HttpEngine.close(HttpEngine.java:478)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.RealCall.getResponse(RealCall.java:273)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:201)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:212)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at okhttp3.RealCall.execute(RealCall.java:57)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at retrofit2.OkHttpCall.execute(OkHttpCall.java:174)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$RequestArbiter.request(RxJavaCallAdapterFactory.java:171)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.Subscriber.setProducer(Subscriber.java:211)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.Subscriber.setProducer(Subscriber.java:205)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:152)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:138)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.Observable.unsafeSubscribe(Observable.java:8666)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:250)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:147)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OperatorMap$MapSubscriber.onNext(OperatorMap.java:74)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OnSubscribeFlattenIterable$FlattenIterableSubscriber.drain(OnSubscribeFlattenIterable.java:239)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OnSubscribeFlattenIterable$FlattenIterableSubscriber.onNext(OnSubscribeFlattenIterable.java:130)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:227)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at android.os.Handler.handleCallback(Handler.java:739)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at android.os.Looper.loop(Looper.java:158)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7224)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at java.lang.reflect.Method.invoke(Native Method)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
08-04 21:27:16.766 12017-12017/com.androidtitan.magicmirror W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Wird 'getHackerNewsItem (id)' auf dem Hauptthread ausgeführt? –