这个最近在项目中遇到,摘抄于此。
开发过程中,页面使用fragmentactivity,可能会遇到这样的问题应用放置于后台,前台应用使用资源过多,手机默认会回收一些优先级低应用的资源。这样当我们的应用回到前端的时候,可能会因为资源被回收,引起异常,导致fragment显示错乱。 查了差相关资料以及别人的帖子, 有一个简单的解决方法, 在activity中重写
@Override
protected void onSaveInstanceState(Bundle outState) {
// super.onSaveInstanceState(outState);
}
方法中注释掉
super.onSaveInstanceState(outState);
ok了。
原理呢,大致是这样的:
当Activity资源被回收前,会调用“onSaveInstanceState”这个方法保存相关的对象等资源 ,而
super.onSaveInstanceState(outState);
调用父类的方法, 重新加载activity的时候默认的是不重新加载内嵌的fragment。直接导致fragmnet页面错乱的问题。
如果我们不调用父类的方法,等于重新加载activity和它的子fragment,避免了因为资源被回收导致fragment错乱的问题。
© 版权声明