APP切换到后台一段时间,再切换到前台app崩溃的解决方案

崩溃,控制台还不打印具体的异常信息,怎么办?测试机红米2a,RAM 1G。知道是内存回收了activity,但不知道怎么解决。

在网上搜了很多文章,最后还是定位到了onsaveinstancestate();于是就各种在这上面做文章。

我的项目中一个MainActivity继承了FragmentActivity,包含了两个fragment;当第一个或第二个fragment由前台切到后台运行一段时间,再切到前台时,crash!在网上看了很多要在onsaveintancestate方法里面保存各种信息,我想我也没有需要保存的信息啊。于是看FragmentActivity里面的

onSaveInstanceState方法:
 
  
protected void onSaveInstanceState(Bundle outState)
2    {
3      super.onSaveInstanceState(outState);
4      Parcelable p = mFragments.saveAllState();
5      if (p != null) {
6        outState.putParcelable("android:support:fragments", p);
7     }
8    }
FragmentActivity确实在onSaveInstanceState方法里面将Fragment的状态保存了。
看了这个你应该也就明白了。让FragmentActivity被系统回收的时候,不保存Fragment的状态即可,即在FragmentActivity中重写onSaveInstanceState方法,也就是把super.onSaveInstanceState(outState)注释掉就行了
至于问题的原因就是:Activity切换到后台之后,由于内存不够,Activity被系统回收,但附属在上面的fragment被保存了。在切换到前台的时候,activity被重新实例化,而fragment再getActivity()时,get的是之前被回收掉的,而不是重新实例化的activity,返回null。情况就是这么个情况。
 
  
 
  

你可能感兴趣的:(android)