`

FragmentActivity中资源被回收,导致页面fragment错乱的问题

阅读更多
开发过程中,页面使用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错乱的问题。

分享到:
评论

相关推荐

    android中的fragment切换的优化

    6. 注意内存泄漏:确保在Activity的onDestroy()方法中正确处理Fragment,避免导致Activity无法被垃圾回收。 7. 使用SingleFragmentActivity:如果一个Activity仅包含一个Fragment,考虑使用SingleFragmentActivity...

    fragment 示例代码

    - 注意在`onCreateView()`中返回的视图不应存储在成员变量中,因为当Fragment重建时,这个视图可能会被回收。 - 避免在Fragment的`onCreateView()`或`onActivityCreated()`中进行耗时操作,否则可能导致卡顿。 - ...

    fragment的使用

    当Fragment不再使用时,确保从Activity的成员变量中移除引用,避免导致Activity无法被垃圾回收。 10. **Fragment与ViewPager的结合**:在实现滑动页面效果时,Fragment通常与ViewPager结合使用。ViewPager可以自动...

    Android 8.0系统界面切换时闪屏问题

    4. **使用Fragment**:合理利用Fragment可以减少Activity的频繁创建和销毁,提高程序性能。 5. **优化Bitmap使用**:合理管理Bitmap对象的生命周期,及时回收不再使用的Bitmap资源。 #### 五、总结 通过对Android ...

    ViewPager仿微信分页导航,多Activity载入

    然而,这样会导致内存泄漏,因为Activity不会被系统自动回收。因此,源码中可能采用了特殊的生命周期管理策略,如使用WeakReference避免强引用导致的问题。 3. **Fragment替代Activity**:虽然使用Activity作为...

    ViewPager初识

    ViewPager是Android平台中一个强大的视图滑动组件,主要用于实现屏幕间的滑动切换效果,常被用在应用的导航、展示多个页面的场景中。它允许用户通过左右滑动来浏览相邻的页面,极大地提升了用户体验。在Android开发...

    《Android应用性能优化》.(埃尔韦).[PDF]

    - **使用软引用/弱引用**:对于非关键资源,可以使用软引用或弱引用来替代强引用,以便在内存不足时被垃圾回收机制回收。 4. **耗电优化** - **减少CPU唤醒时间**:避免不必要的后台任务和网络请求,减少CPU的...

    Android设计思想解读开源框架.pdf

    - **资源回收**:Glide能够智能地管理加载中的图片资源,确保不会导致内存溢出等问题。 ### 第五章:网络访问框架设计 **5.1 网络通信必备基础** - **HTTP/HTTPS协议**:网络通信的基础,用于客户端与服务器之间...

    我的android学习记录

    - **并发控制:** 在多线程环境中使用`AsyncTask`时需要考虑并发控制,防止多个任务同时执行导致的问题。 #### 十三、final修饰 **知识点解析:** - **概念解释:** `final`关键字在Java中用于标记不可变的实体,...

    Android技术面试资料整理

    例如,Activity或Fragment可以作为Controller,负责处理用户事件;自定义View可以作为View,负责UI展示;而数据管理则可以放在单独的类中作为Model。 #### 16. 避免ANR的方法 - **限制主线程中的耗时操作**:尽量...

    安卓面试题

    - **常见问题**:静态成员变量持有Activity引用导致无法回收。 - **解决方案**:使用WeakReference替代强引用。 #### 15. 接口与抽象类的区别 - **接口**:只能定义方法签名,不能有方法体。 - **抽象类**:可以有...

    2011Android技术面试整理附有详细答案(包括百度、新浪、

    - 为了防止Activity被系统回收时丢失状态,可以在`onSaveInstanceState()`方法中保存状态,在`onRestoreInstanceState()`方法中恢复状态。 #### 23. 设置Activity为窗口样式 - 可以通过修改`AndroidManifest.xml`...

    android面试题

    在Android中,通常将Activity或Fragment视为Controller,布局文件视为View,而Model则负责数据管理和业务逻辑。 #### 16. ANR(Application Not Responding) - **定义**:当Activity超过5秒没有响应用户的输入时...

    Android校招面试指南 2018最新版本

    - **JVM中垃圾收集算法及垃圾收集器详解**:不同的垃圾回收算法及它们的特点。 - **JVM怎么判断对象是否已死?**:对象存活状态的判定条件。 #### 四、Android基础 - **Activity全方位解析**:Android四大组件之一...

    Android招聘面试题解答

    - **内存泄露**:内存泄露是指不再使用的对象仍然被引用,导致无法被垃圾回收器回收,最终可能引起应用崩溃或性能下降。在 Android 中,内存泄露常见的情况包括: - 数据库 Cursor 对象未关闭。 - 在 Adapter ...

Global site tag (gtag.js) - Google Analytics