Fragment面对手机配置信息更改问题

当手机配置信息更改【如 屏幕方向,屏幕像素密度,屏幕尺寸,键盘类型,底座模式,以及语言等发生改变】
会导致系统去寻找是否有最佳资源来适应新的配置信息,因此我们的activity会被销毁,然后再重建。
那么我activity里面已经加载好了的fragment包含了很对信息,不是也会随着activity销毁而销毁吗?
这里提供两个简单的方法来保证fragment不被销毁:

1)在fragment里加上 setRetaIninstance(true);


image.png

调用setRetainInstance(true)方法可以保留fragment。已保留的fragment不会随activity一起销毁。相反,它会一直保留,并在需要时原封不动地转给新的activity。

2)对于一些类似的类(如videoview),Android文档推荐activity自己处理设备配置变更。也就是说,无需销毁重建activity,就能直接调整自己的视图以适应新的屏幕尺寸。为了让activity能自己处理设备配置调整,可在manifest配置文件中做如下调整:


image.png

上面的android:configChanges属性表明,如果因键盘开或关,屏幕方向改变,屏幕大小改变而发生设备配置更改,那么activity应自己处理配置更改。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容