今天排查了一下Bugly上记录的bug,发现了这么一条bug:

what:

#4 java.lang.IllegalStateException
Fragment MineFragment{c7df2e1 (86dd7d54-ce0d-440c-8207-cbcce5f4e966)} not attached to a context.

com.car.cartechpro.module.main.fragment.MineFragment.java.lang.String
getObdDetail()(ProGuard:8)

How:

在Activity重建的时候,假如fragment还在使用诸如context,就会出现这个问题。
比如:
【1】突然横屏,fragment里面正在访问网络接口,使用了new ProgressDialog(context,R.style.waitting_dialog);来进行等待,就会崩溃,Fragment not attached to a context;
【2】在getResources()时需要Context,而这时Fragment可能与Activity不在绑定状态;
【3】在Fragment处理异步操作时。
因此,一定要记着在fragment内部加判断:i使用isAdded()来判断是否fragment和activity绑定,确保不会出问题。

也有以下几种可能的原因和解决方案:

第一种:

IllegalStateException: Can not perform this action after
onSaveInstanceState:
#解决办法:onSaveInstanceState方法是在该Activity即将被销毁前调用,来保存Activity数据的,如果在保存玩状态后
再给它添加Fragment就会出错。解决办法就是把commit()方法替换成 commitAllowingStateLoss()
========================================================= 错误原因: 该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向客户端(实际上是缓冲区)输出任何内容。 Object is
no longer valid to operate on. Was it deleted by another thread?
该异常表示,realmObject对象在其他线程已被删除,在这个线程中使用的时候抛出的异常。

具体分析:

首先解释下flush(),我们知道在使用读写流的时候数据先被读入内存这个缓冲区中,
然后再写入文件,但是当数据读完时不代表数据已经写入文件完毕,因为可能还有一部分仍未写入文件而留在内存中,这时调用flush()方法就会把缓冲区的数据强行清空输出,因此flush()的作用就是保证缓存清空输出。response是服务端对客户端请求的一个响应,其中封装了响应头、状态码、内容等,服务端在把response提交到客户端之前,会向缓冲区内写入响应头和状态码,然后将所有内容flush。这就标志着该次响应已经committed(提交)。对于当前页面中已经committed(提交)的response,就不能再使用这个response向缓冲区写任何东西(注:同一个页面中的response.XXX()是同一个response的不同方法,只要其中一个已经导致了committed,那么其它类似方式的调用都会导致
IllegalStateException异常)。
参考:http://my.oschina.net/guhai2004/blog/187041,https://github.com/realm/realm-java/issues/1206

第二种:

java.lang.IllegalStateException Can’t change tag of fragment d{e183845
#0 d{e183845}}: was d{e183845} now d{e183845 #0 d{e183845}} 经查,我在显示fragment的代码中使用了: fragment.show(getSupportFragmentManager,
fragment.toString()); 而这里是因为两次toString()结果不同,导致不同的tag指向的是同一个fragment。
获取fragment的tag的正确方法应该是使用其提供的fragment.getTag()方法。

第三种:

java.lang.IllegalStateException Expected BEGIN_ARRAY but was
BEGIN_OBJECT at line 1 column 37 path $.data
错误原因:该异常是由于服务器错误返回的JSON字符串和服务器正常下时返回的JSON字符串结构不同,导致利用Gson解析的时候报了一个异常:本该去解析集合却强制去解析对象所致.
解决办法:在使用Gson解析JSON时try cash一下,不报错按照正常逻辑继续解析,报异常则处理为请求失败逻辑即可.

Android——bug:not attached to a context.相关推荐

  1. 解决Bug:关于折叠屏手机(Android)出现fragment重叠问题

    文 | Promise Sun 一.Bug问题描述 关于安卓折叠手机出现fragment重叠问题: 运行手机:华为折叠手机(HUAWEI Mate X2,很贵的那款) Bug:使用华为折叠手机,当折叠 ...

  2. Android bug收集整理

    Bug收集以及解决方案 1.使用git bash 添加submodule时,出现如下提示信息 Unregistered VCS root detected The directory C:\Users ...

  3. Android自定义控件:NestedScrolling实现仿魅族flyme6应用市场应用详情弹出式layout

    在前一篇博文中已经实现过一个仿魅族flyme6应用市场应用详情弹出式layout: Android自定义控件:从零开始实现魅族flyme6应用市场应用详情弹出式layout,主要是通过viewDrag ...

  4. Android实践:做一个可视频交互的智能小车

    本文的三位作者正阳.海洋.阿力,是来自不同公司的工程师,在Agora RTC Hack 上海站编程马拉松上,开发了一款可实时视频远程看房的智能小车.本文将从方案设计.硬件开发.Android 端开发. ...

  5. Android开发:CoordinatorLayout下的滑动异常(RecyclerView)

    接手的项目因为用了BRVAH中的OnLoadMore,同时要外包裹接上下拉刷新加载.和NestedScrollView有冲突.所以用了CoordinatorLayout (框架的陈年bug,简单来说就 ...

  6. linux devm_request_irq 引发BUG sleeping function called from invalid context问题

    平台:msm8937+android7.1 问题和log 同样的代码在user版本上正常,但在userdebug版本上就有问题,设备反复重启. [   29.288033] lm3492hc_bklt ...

  7. 广播系统android安全:flag FLAG_RECEIVER_REGISTERED_ONLY的意义

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 做过时钟widget的友朋该应对ACTION_TIME_TICK都很熟习,大家都用这个广播来更新UI界面上的时光,但是新版本的and ...

  8. 手电筒android studio,Android Studio:手电筒关闭时崩溃

    我试图开发手电筒应用程序作为我的第一个"真正"的应用程序,几乎所有的工作.但每次我想关闭手电筒时,我的应用程序都会崩溃.代码和logcat的日志如下:Android Studio: ...

  9. 使用WebRTC开发Android Messenger:第3部分

    这是一个由三部分组成的系列文章,内容涉及:利用WebRTC中的BUG和利用Messenger应用程序.本系列文章重点阐述了当应用程序不能应用于WebRTC补丁程序以及通信和安全问题通知中断时可能出问题 ...

最新文章

  1. 一文读懂Asp.net core 依赖注入(Dependency injection)
  2. linux重新安装mysql步骤_Linux下MySQL安装及相关操作过程
  3. 1-3 数组的反序输出
  4. 从深度学习选择什么样的gpu来谈谈gpu的硬件架构
  5. nginx日志切割并使用flume-ng收集日志
  6. java线程太多卡顿_性能优化之卡顿延迟
  7. linux vnc 改端口号,基于Linux中vnc配置端口号的修改方法
  8. IOS开发基础知识--碎片23
  9. Must、should、have to、can 和 need to的否定句_56
  10. java线程释放_Java多线程出现异常会自动释放锁
  11. Uboot系统初始化为何要初始化堆栈?为何C语言的函数调用要用到堆栈,而汇编却不需要初始化堆栈?
  12. java课程设计小组分工_java课程设计---团体
  13. Android5.1 快捷开关如何添加和刷新状态
  14. 计算机程序判断素数(一)
  15. 如何在谷歌地图自定义范围_如何在Google表格中更改和创建自定义数字格式
  16. 计算机网络 学习通 第三章作业
  17. PostgreSql 配置文件 postgresql.conf 参数设置
  18. 最新Java资源整理,大多数人的选择
  19. PHP三网码支付系统源码PC软件带云端源码/含三套前端模板免签支付系统安装教程
  20. 【大数据】Spark开源REST服务--Apache Livy的安装和使用

热门文章

  1. Gitee图床迁移阿里云
  2. 生成10位随机数(PHP)
  3. pe管厂家_mpp管与PE管的区别
  4. python显示圆周率的值是多少_用python做一个有趣的实验,看你的生日是否出现在圆周率中...
  5. IBM AppScan 安全扫描报告中部分问题的解决办法
  6. 乡巴佬GHOST WIN7 SP1 装机版旗舰版(32位)2013 06
  7. 什么是 3A 游戏?
  8. websocket没准备好如何解决_看完让你彻底搞懂Websocket原理
  9. 维基解密网站下线4小时,与《41号修订案》有关?
  10. Windows编译chromium