开发过程中,页面使用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错乱的问题。
分享到:
相关推荐
6. 注意内存泄漏:确保在Activity的onDestroy()方法中正确处理Fragment,避免导致Activity无法被垃圾回收。 7. 使用SingleFragmentActivity:如果一个Activity仅包含一个Fragment,考虑使用SingleFragmentActivity...
- 注意在`onCreateView()`中返回的视图不应存储在成员变量中,因为当Fragment重建时,这个视图可能会被回收。 - 避免在Fragment的`onCreateView()`或`onActivityCreated()`中进行耗时操作,否则可能导致卡顿。 - ...
当Fragment不再使用时,确保从Activity的成员变量中移除引用,避免导致Activity无法被垃圾回收。 10. **Fragment与ViewPager的结合**:在实现滑动页面效果时,Fragment通常与ViewPager结合使用。ViewPager可以自动...
4. **使用Fragment**:合理利用Fragment可以减少Activity的频繁创建和销毁,提高程序性能。 5. **优化Bitmap使用**:合理管理Bitmap对象的生命周期,及时回收不再使用的Bitmap资源。 #### 五、总结 通过对Android ...
然而,这样会导致内存泄漏,因为Activity不会被系统自动回收。因此,源码中可能采用了特殊的生命周期管理策略,如使用WeakReference避免强引用导致的问题。 3. **Fragment替代Activity**:虽然使用Activity作为...
ViewPager是Android平台中一个强大的视图滑动组件,主要用于实现屏幕间的滑动切换效果,常被用在应用的导航、展示多个页面的场景中。它允许用户通过左右滑动来浏览相邻的页面,极大地提升了用户体验。在Android开发...
- **使用软引用/弱引用**:对于非关键资源,可以使用软引用或弱引用来替代强引用,以便在内存不足时被垃圾回收机制回收。 4. **耗电优化** - **减少CPU唤醒时间**:避免不必要的后台任务和网络请求,减少CPU的...
- **资源回收**:Glide能够智能地管理加载中的图片资源,确保不会导致内存溢出等问题。 ### 第五章:网络访问框架设计 **5.1 网络通信必备基础** - **HTTP/HTTPS协议**:网络通信的基础,用于客户端与服务器之间...
- **并发控制:** 在多线程环境中使用`AsyncTask`时需要考虑并发控制,防止多个任务同时执行导致的问题。 #### 十三、final修饰 **知识点解析:** - **概念解释:** `final`关键字在Java中用于标记不可变的实体,...
例如,Activity或Fragment可以作为Controller,负责处理用户事件;自定义View可以作为View,负责UI展示;而数据管理则可以放在单独的类中作为Model。 #### 16. 避免ANR的方法 - **限制主线程中的耗时操作**:尽量...
- **常见问题**:静态成员变量持有Activity引用导致无法回收。 - **解决方案**:使用WeakReference替代强引用。 #### 15. 接口与抽象类的区别 - **接口**:只能定义方法签名,不能有方法体。 - **抽象类**:可以有...
- 为了防止Activity被系统回收时丢失状态,可以在`onSaveInstanceState()`方法中保存状态,在`onRestoreInstanceState()`方法中恢复状态。 #### 23. 设置Activity为窗口样式 - 可以通过修改`AndroidManifest.xml`...
在Android中,通常将Activity或Fragment视为Controller,布局文件视为View,而Model则负责数据管理和业务逻辑。 #### 16. ANR(Application Not Responding) - **定义**:当Activity超过5秒没有响应用户的输入时...
- **JVM中垃圾收集算法及垃圾收集器详解**:不同的垃圾回收算法及它们的特点。 - **JVM怎么判断对象是否已死?**:对象存活状态的判定条件。 #### 四、Android基础 - **Activity全方位解析**:Android四大组件之一...
- **内存泄露**:内存泄露是指不再使用的对象仍然被引用,导致无法被垃圾回收器回收,最终可能引起应用崩溃或性能下降。在 Android 中,内存泄露常见的情况包括: - 数据库 Cursor 对象未关闭。 - 在 Adapter ...