दर्ज करते समय अजीब लाइफसाइक्ल कॉलबैक ऑर्डर करते हुए मुझे आरएक्सजेवा, रेट्रोफिट और मल्टी-विंडो मोड के साथ समस्या हो रही है ... मैं एक गतिविधि के अंदर रेट्रोफिट के साथ अपना स्वयं का एपीआई कॉल कर रहा हूं (वास्तविक कोड एक है इस तुलना में अधिक जटिल थोड़ा):मल्टी-विंडो मोड
api.getEvent(...)
.subscribeOn(Schedulers.io())
.observeOn(AndroidScheduler.mainThread())
.subscribe(event -> setupUI(event),
throwable -> showSnackbar(throwable));
एप्लिकेशन "सामान्य" मोड (पूर्ण स्क्रीन) सब कुछ ठीक चलाता है में है ... मैं एप्लिकेशन bg में डाल सकते हैं, अग्रभूमि और करने के लिए इसे वापस रख एपीआई कॉल विधि को फिर से बुलाया जाता है (यह ऑनस्यूम विधि में है - तरह) और यूआई समस्याओं के बिना खींचा जाता है। जब मैं मल्टी-विंडो मोड को सक्रिय करता हूं, इसके बजाए, रेस्यूम पर कॉल किया जाता है, तो एपीआई विधि को सफलता के साथ बुलाया जाता है लेकिन सब्सक्राइब() विधि कभी नहीं पहुंचती है। इस स्थिति के लिए स्टैकट्रेस है:
Retrofit: java.io.InterruptedIOException: thread interrupted
at okio.Timeout.throwIfReached(Timeout.java:145)
at okio.Okio$1.write(Okio.java:77)
at okio.RealBufferedSink.flush(RealBufferedSink.java:221)
at com.squareup.okhttp.internal.framed.Http2$Writer.flush(Http2.java:381)
at com.squareup.okhttp.internal.framed.FramedConnection.newStream(FramedConnection.java:283)
at com.squareup.okhttp.internal.framed.FramedConnection.newStream(FramedConnection.java:249)
at com.squareup.okhttp.internal.http.Http2xStream.writeRequestHeaders(Http2xStream.java:135)
at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:710)
at com.facebook.stetho.okhttp.StethoInterceptor.intercept(StethoInterceptor.java:67)
at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:695)
at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:576)
at com.squareup.okhttp.Call.getResponse(Call.java:287)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205) at com.squareup.okhttp.Call.execute(Call.java:80)
at com.newrelic.agent.android.instrumentation.okhttp2.CallExtension.execute(CallExtension.java:43)
at retrofit.client.OkClient.execute(OkClient.java:53)
at com.newrelic.agent.android.instrumentation.retrofit.ClientExtension.execute(ClientExtension.java:42)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)
at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
at retrofit.RestAdapter$RestHandler$1.invoke(RestAdapter.java:265)
at retrofit.RxSupport$2.run(RxSupport.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at retrofit.Platform$Android$2$1.run(Platform.java:142)
at java.lang.Thread.run(Thread.java:761)
एप्लिकेशन दुर्घटना नहीं करता, लेकिन यूआई एक "प्लेसहोल्डर" राज्य में रहता है और लोड हो रहा है ProgressBar हमेशा के लिए चला जाता है।
संपादित करें: मेरे पास अन्य गतिविधियों में एक ही कोड संरचना है। हालांकि यह मुद्दा कहीं और नहीं दिखाई देता है।
क्या आप अनुरोध करते समय ध्यान केंद्रित विंडो बदलते हैं? – azizbekian
नहीं ... कोड वही है ... फोन पर केवल एक चीज है जो मैं करता हूं कि जब मैं गतिविधि – nicopasso