最近遇到一个很棘手的线上Bug,日志如下
java.lang.IllegalStateException: No host
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1184)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1179)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1991)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1976)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1041)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1197)
在网上搜了好多解决方法,重写Fragment的onDetach()方法也试了,过了几天此Bug依然复现,查看了报错的fragment代码和源码也没看出任何头绪。后来测试同学偶然复现了此问题,才发现原来是这个fragment启动的一个activity里发生了内存溢出的崩溃,activity崩溃后被销毁退回到了此fragment,然后这个fragment就发生了此Bug。所以如果试了网上的重写Fragment的onDetach()等方法还是没有解决no host的话,就可以看看是不是fragment启动的界面里发生了某些错误异常导致此问题。