Android retrofit+rxjava + okhttp 框架无网络的情况启动app崩溃

louislrt 2018-05-31 02:51:56
软件采用retrofit+rxjava + okhttp 框架实现网络通信,在启动时会崩溃,我已经查到崩溃原因是未能连接到服务器->SocketExceptionjava.net.ConnectException: Failed to connect to /101.200.217.254:8001。而且我在RequestListener中已经对错误有过记录(虽然没有进一步的操作),但是为什么还会一起崩溃。请大神指教

部分报错信息如下:
05-31 14:45:44.928 16499-16499/com.zhilu.xiajuexin E/RequestListener: e is SocketExceptionjava.net.ConnectException: Failed to connect to /101.200.217.254:8001
05-31 14:45:44.936 16499-16499/com.zhilu.xiajuexin E/RequestListener_onFail: 当前网络状况不好,请检查后重试
05-31 14:45:45.147 16499-16499/com.zhilu.xiajuexin E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5297)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: rx.exceptions.OnErrorFailedException: Error occurred when trying to propagate error to Observer.onError
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:192)
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:254)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:186)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at android.os.Handler.handleCallback(Handler.java:725) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:153) 
at android.app.ActivityThread.main(ActivityThread.java:5297) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: rx.exceptions.CompositeException: 2 exceptions occurred.
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:192) 
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120) 
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:254) 

Caused by: rx.exceptions.CompositeException$CompositeExceptionCausalChain: Chain of Causes for CompositeException In Order Received =>
at com.umeng.analytics.pro.br.a(DataHelper.java:171)
at com.umeng.analytics.b.a(InternalAgent.java:459)
at com.umeng.analytics.pro.ar.a(CrashHandler.java:43)
at com.umeng.analytics.pro.ar.uncaughtException(CrashHandler.java:34)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:66)
at android.os.Handler.handleCallback(Handler.java:725) 
at android.os.Handler.dispatchMessage(Handler.java:92) 

Caused by: java.net.ConnectException: Failed to connect to /101.200.217.254:8001
at okhttp3.internal.io.RealConnection.connectSocket(RealConnection.java:142)
at okhttp3.internal.io.RealConnection.connect(RealConnection.java:111)
at okhttp3.internal.http.StreamAllocation.findConnection(StreamAllocation.java:188)
at okhttp3.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:127)
at okhttp3.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at okhttp3.internal.http.HttpEngine.connect(HttpEngine.java:289)
at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:241)
at okhttp3.RealCall.getResponse(RealCall.java:240)
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160)
at okhttp3.RealCall.execute(RealCall.java:57)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:174)
at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$RequestArbiter.request(RxJavaCallAdapterFactory.java:171)
at rx.internal.operators.OperatorSubscribeOn$1$1$1.request(OperatorSubscribeOn.java:80)
at rx.Subscriber.setProducer(Subscriber.java:211)
at rx.internal.operators.OperatorSubscribeOn$1$1.setProducer(OperatorSubscribeOn.java:76)
at rx.Subscriber.setProducer(Subscriber.java:205)
at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:152)
at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:138)

...全文
3485 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
路遥在路上 2018-06-02
  • 打赏
  • 举报
回复
引用 4 楼 louislrt 的回复:
[quote=引用 2 楼 sunluyao_ 的回复:] https://blog.csdn.net/u010588886/article/details/62043761
谢谢,我看了不是这个问题,我解决了。 参考的是https://stackoverflow.com/questions/43140321/why-retrofit-client-crashes-when-theres-no-network-connection 是个很蠢的问题,但是原理不是很懂,我在处理时重载Requestlistener里的onError就可以了,不知道为什么,但是确实好用,其他页面不重载也没问题,只有MainActivity里会引起崩溃[/quote]可能异步里面的异常得处理一下,要传出来
louislrt 2018-06-01
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
try catch捕获一下错误
谢谢,我看了不是这个问题,我解决了。 参考的是https://stackoverflow.com/questions/43140321/why-retrofit-client-crashes-when-theres-no-network-connection 是个很蠢的问题,但是原理不是很懂,我在处理时重载Requestlistener里的onError就可以了,不知道为什么,但是确实好用,其他页面不重载也没问题,只有MainActivity里会引起崩溃,大佬有思路为啥不
louislrt 2018-06-01
  • 打赏
  • 举报
回复
引用 2 楼 sunluyao_ 的回复:
https://blog.csdn.net/u010588886/article/details/62043761
谢谢,我看了不是这个问题,我解决了。 参考的是https://stackoverflow.com/questions/43140321/why-retrofit-client-crashes-when-theres-no-network-connection 是个很蠢的问题,但是原理不是很懂,我在处理时重载Requestlistener里的onError就可以了,不知道为什么,但是确实好用,其他页面不重载也没问题,只有MainActivity里会引起崩溃
路遥在路上 2018-06-01
  • 打赏
  • 举报
回复
https://blog.csdn.net/u010588886/article/details/62043761
oyljerry 2018-05-31
  • 打赏
  • 举报
回复
try catch捕获一下错误
一位练习时长两年半的安卓练习生根据鸿神提供的WanAndroid开放Api来制作的产品级App,基本实现了所有的功能,采用Kotlin语言,基于Material Design AndroidX MVP RxJava Retrofit等优秀的开源框架开发,注释超详细,方便大家练手如果你觉得做的还可以对你有帮助,容我卑微地向你要个star,有任何问题或建议,欢迎提交issues前言前段时间学习了 Kotlin ,就打算写一个项目来练练手刷刷熟练度,因为经常逛鸿神的WanAndroid网站,觉得很不错,Api也很丰富健全, 虽然根据WanAndroidAPi开发出的app多如牛毛,有诸多优秀的app,但是每个人的喜好与审美不一样,所以都没有做到我心目中的最完美,于是我就想做一个自己觉得最满意的app。界面的话参考了很多的app风格,根据自己的搭配实现,感觉还不错吧实现的功能首页五大模块:首页 / 项目 / 体系/ 公众号 / 我的登录注册功能导航功能搜索功能 热门搜索推荐 搜索历史记录积分功能 积分排行 积分获取记录收藏功能 收藏文章 收藏网址待办清单 添加清单 编辑清单 删除清单文章网址详情 详情中收藏 分享 浏览器打开全局修改应用主题色全局修改列表的加载动画侧滑返回 可打开与关闭文章在任何地方收藏与取消,其他界面相对应的数据也会变化布局优化,大量使用ConstraintLayout集成Bugly收集bug并实现App更新APP下载GitHub下载fir.im下载扫码应用截图    主要开源框架一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的框架-RxJava2一个依赖注入框架-Dagger2处理网络请求的框架-Okhttp一个基于OKHttp封装的网络加载框架-Retrofit转换json数据的官方框架-GsonAndroid的事件发布-Eventbus项目核心库MVP框架-MVPArms屏幕适配AndroidAutoSize一个美丽的、流体和可扩展的对话框-Material-dialogs一个强大的Fragment管理库-Fragmentation一个增强BottomNavigationView的安卓库-BottomNavigationViewEx强大、可定制、易扩展的 ViewPager 指示器框架-MagicIndicator一个强大的轮播库-BGABanner-Android一个强大并且灵活的RecyclerViewAdapter-BaseRecyclerViewAdapterHelperRecyclerView侧滑菜单,Item拖拽,滑动删除Item,自动加载更多,HeaderView,FooterView,Item分组黏贴-SwipeRecyclerView揭示效果布局-RevealLayout优雅地处理加载中,重试,无数据-Loadsir基于Android WebView的一个强大的库-AgentwebAndroid流式布局-FlowLayout基于mmap内存映射的移动端通用 key-value 组件-MMKV侧滑返回-SmartSwipe全局捕捉异常防止崩溃-CustomActivityOnCrash素材来源阿里巴巴矢量图标库借鉴了花瓣的登录页goweii项目中的App图标特别感谢感谢鸿神的WanAndroid网站提供的开放API,我在issues提了一些自己的需求,鸿神也耐心的帮忙添加了,谢谢

80,473

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧