Fragment缓存问题的解析

本文探讨了在Android开发中遇到的Fragment重绘问题,特别是在网络加载场景下,每次切换Fragment时会重新创建并填充数据。为解决此问题,提出了缓存UI的解决方案,以避免不必要的数据获取。示例代码展示了如何实现Fragment的缓存,同时提醒注意防止内存溢出(OOM)错误。文章还提及了系统自带的API作为备选方案。
摘要由CSDN通过智能技术生成

1、Fragment简介

        Fragment是Android开发中一个寄生于Activity的类,它的主要作用是显示界面给用户,可以看做是一个特殊的Activity。为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像Activity一样包含布局。

       我们说Fragment是寄生于Activity的,所以我们在使用Fragment的时候,通常是嵌套在Activity中使用的。


2、问题描述

       类似新浪微博的底部选项栏目,很多app也采用了类似的结构布局。但是我们在使用该种布局的时候,尤其是在网络加载的情况下,会发现一个问题:每次FragmentTabHost切换fragment时会调用onCreateView()重绘UI。

       对于很多应用来说,数据都是要从服务器上获取的,如果重绘UI,就表示数据要再次获取和填充,那么有没有什么比较好的解决方案呢?


3、解决方案

       解决方案就是缓存UI。

       与Adapter中的UI缓存类似,我们也可以在Fragment中缓存UI,达到界面不被系统回收的效果。可能有人会有疑问,手机不能支持这么大的缓存怎么办?额,其实该种方案就是以空间换时间的办法。对于现在的手机系统来说,基本没有小于1G的内存量的,一般来说,你缓存几个页面不是什么大问题。

       图片的缓存可能会出现OOM(内存溢出)错误,UI界面一样也可能,但是UI的缓存的消耗是远远小于图片缓存的。现在的手机࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值