现象:

同事的手机是OPPO-R9S,这个手机的垃圾回收真是吊炸天,activity中四个fragment,点击home键后再进入,显示退出时候的fragment,在切换其他fragment的时候,像是放在了下面不显示了,其他的手机没有发现这个问题

原因:

找了一些资料看,我觉得应该是,当Fragment长久不使用,系统进行回收,FragmentActivity调用onSaveInstanceState保存Fragment对象。很长时间后,再次打开app,系统恢复保存的Fragment,但是在FragmentActivity重新执行生命周期的时候,我们重新生成了fragment对象附加到该FragmentActivity,系统恢复的fragment和FragmentActivity失去关联,进而出错。

解决:

@Override
protected void onSaveInstanceState(Bundle outState) {


// super.onSaveInstanceState(outState);
}

管你保存什么,都直接创建fragment

这个方法是在onPause方法之前被调用的,因此如果一旦执行onpause,就会保存当前的状态信息,如果注释掉对应的方法则不会保存状态信息,当activity被系统回收的时候,在一个进程中再次启动activity也不会保存之前的状态信息。如在主界面启动了otherActivity,并等待了很久,当需要返回主界面的时候,主界面被销毁了,则时候就会执行oncreate(否则执行onResume),如果onsaveInstance有数据,则加载之前的数据(比如加载之前的fragment),但是此时有创建了新的fragment,于是,缓存的fragment就覆盖

当然这是暴力点,可以借鉴下面的第一条博客,但是比较麻烦,我认为是比较合理的。


借鉴博客:

http://blog.csdn.net/fan7983377/article/details/51889269

http://blog.csdn.net/u014316462/article/details/50190137

http://blog.csdn.net/wangyetongsss/article/details/51790279



更多相关文章

  1. android手机联网时会有什么系统广播发出呢??
  2. [置顶] Android系统的样式style
  3. Android实现一键复制粘贴,兼容低版本系统(api 11以下)
  4. 哪个移动系统适合程序员?
  5. android开发中调用系统中分享功能的方法
  6. [置顶] Android系统体系结构分析
  7. Android移动应用界面的模板化设计
  8. android4.0.4 系统默认值的修改
  9. Lance老师UI系列教程第三课->QQ登录注册界面的实现(android-2012

随机推荐

  1. Android(安卓)图片大小超过预算的VM:java.
  2. Android(安卓)TimeUtil
  3. android ACTION_BOOT_COMPLETED接收不到
  4. android初学者的探索之路(Android音乐播放
  5. 高仿大众点评商家列表
  6. 介绍几本初学Android资料和教材——选对
  7. Java和Android Http连接程序:使用java.net
  8. 【Android(安卓)工具类】常用工具类(方法)
  9. 【Android】注解框架(四)-- 一行代码注入微
  10. unity调用MMBilling_2.4.2 Android SDK.