Fragment应用放置后台很久再次进入不会重新刷新数据展示、或者直接崩溃问题解决
2017-11-13 09:20
761 查看
什么原因呢?如何解决呢?
当Fragment长久不使用,系统进行回收,FragmentActivity调用onSaveInstanceState保存Fragment对象。
Activity可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Activity。
很长时间后,再次打开app,系统恢复保存的Fragment,但是在FragmentActivity重新执行生命周期的时候,我们重新生成了fragment对象附加到该FragmentActivity,系统恢复的fragment和activity失去关联,进而出错。
方案1:在fragmentActivity里oncreate方法判断savedInstanceState==null才生成新Fragment,否则不做处理。
方案2:在fragmentActivity里重写onSaveInstanceState方法,但不做实现,也就是将super.onSaveInstanceState(outState)注释掉。 这样你Activity销毁了你也不用保存我Fragment的状态了。
方案3:if(savedInstanceState!=null){
FragmentManager manager = getSupportFragmentManager();
manager.popBackStackImmediate(null, 1);
}判断savedInstanceState不等以null就弹出所有Fragment 全部重新加载
当Fragment长久不使用,系统进行回收,FragmentActivity调用onSaveInstanceState保存Fragment对象。
Activity可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Activity。
很长时间后,再次打开app,系统恢复保存的Fragment,但是在FragmentActivity重新执行生命周期的时候,我们重新生成了fragment对象附加到该FragmentActivity,系统恢复的fragment和activity失去关联,进而出错。
方案1:在fragmentActivity里oncreate方法判断savedInstanceState==null才生成新Fragment,否则不做处理。
方案2:在fragmentActivity里重写onSaveInstanceState方法,但不做实现,也就是将super.onSaveInstanceState(outState)注释掉。 这样你Activity销毁了你也不用保存我Fragment的状态了。
方案3:if(savedInstanceState!=null){
FragmentManager manager = getSupportFragmentManager();
manager.popBackStackImmediate(null, 1);
}判断savedInstanceState不等以null就弹出所有Fragment 全部重新加载
相关文章推荐
- android studio编程时出现的错误:ListView重新载入后,更新数据或者再次进入该ListView加载数据,数据不显示 解决方法
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法
- Android 应用home键,来电或者其他方式进入后台运行,再次进入程序需要重新登录问题
- 关于iOS11上MJRefresh tabview刷新后,重新加载另一组数据, 回不到顶部或者头尾显示混乱等问题解决
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法 续集
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- iOS CAlayer 动画进入后台或者 调用viewWillDisappear viewDidDisappear后动画暂停问题的解决办法
- 在Asp.net 2.0 中禁用页面缓存解决页面刷新(重新加载数据)的问题!
- 解决IOS通过HTML5播放Video或者Audio直接输出数据的问题
- 解决后台提交表单数据时,重复F5刷新页面出现重复提交数据的问题。
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- linq to sql统一更新方法,直接返回更新的对象(解决更新后再刷新数据错误显示问题)
- 使用Fragment应用放置后台很久再次进入出现程序奔溃
- Ext tree或者gridl在选中数据并删除选中数据,刷新数据后任选中已删除数据问题解决
- 解决后台修改数据后在IE8中刷新网页还是之前的页面的问题
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- 关于解决jquery用get实现ajax在ie里面刷新不进入后台的问题
- andengine按home键或者power键再次进入程序数据丢失问题
- echarts图表中的点、柱形或者折线显示不出来,但是有数据的问题解决(另附后台返回数据实例代码)