optimus

多个Fragment界面重叠和拍照闪退问题

耗尽温柔 提交于 2019-11-26 11:40:54
记录最近遇到的多个Fragment界面重叠和调用系统相机拍照闪退问题,同时总结解决方案。 ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 环境:Activity(一个)+Fragment(多个) 问题一:多个fragment出现重叠现象 首先,Android管理Fragment有两种方式,使用add、hide、show的方式和replace方式,两种方式各有优缺点。 --> replace方式 如果使用这种方式,是可以避免重叠的问题,但是每次replace会把生命周期全部执行一遍,如果在这些生命周期函数里拉取数据的话,就会不断重复的加载刷新数据,所以我们并不推荐使用这种方式。 --> add、hide、show的方式 虽然这种方式避免了可能重复加载刷新数据的问题,但是会出现重叠的问题。 原因: 当系统内存不足,Fragment 的宿主 Activity 回收的时候,Fragment 的实例并没有随之被回收。Activity 被系统回收时,会主动调用 onSaveInstance() 方法来保存视图层(View