昨天写了一篇关于Fragment的使用优化的技巧,一是减少成员变量的重新赋值,二是使用hide()、show()等方法替代replace(),这样片段就不需要多次创建,但是,这样也带来了另外一个问题,这是我昨天没有考虑到的,那就是内存的使用上,只隐藏而不销毁,在内存的使用上并不合理,一些小的项目上也许并看不出什么问题,但是一旦在大型的项目这么做的话,可能会引起内存不足,所以怎么使用看大家怎么取舍。另外,还要改正昨天我的一个错误,那就是replace()会引起耗时操作,这么讲其实是不准确的,耗时主要是因为片段的初始化耗时引起,今天我用一个空白的片段进行切换,发现并没有引起耗时,从而打翻了我昨天下的结论,再次从片段的生命周期上查看,发现onCreatView调用结束后并不是直接调用onResume的,中间还需要调用它的其他生命周期的方法,还包括Activity的onStart和onResum,所以,耗时操作应该是由Android内部的一些代码执行引起,时间有限,所以也不用深究底层,只要注意,当我们遇到片段卡顿的情况,有两种优化方法,一个是缓存片段,一个是缩短初始化的时间。
好了,另外就是昨天说到FragmentTabHost经行片段切换,昨天才说看不到源码,今天我就在老师的指导下找到了源码,从而也了解到了片段在FragmentTabHost里面的切换模式,首先奉上源码路径,可能大家都知道,就是
sdk\extras\android\support\v4\src\java\android\support\v4\app。这个路径下大家可以找到v4包的源码,方便我们学习。当然其他像v7包的大家也可以找到,开源就是好。至于这个类怎么进行片段管理,由于只是粗粗一看,不好拿出来说,就等下回了。因为没什么写博文的经验,准备的不是很充分,代码也没贴出来,让人看起来颇为吃力,只能说声sorry了,今后努力改进。
原文地址:http://linwg.blog.51cto.com/9120692/1572675