保留的片段是否保留其视图?

保留的片段是否保留其视图?,第1张

概述调用Fragment.setRetainInstance(true)将导致Fragment被FragmentManager保留,但是它是否保留了View?我认为不是,但我正在寻求确认.我想不是因为Fragment.onCreateView()仍然被调用(即使onCreate()不是),并且调用getView()返回null.如果没有视图,那么在配置更改中保留片段的意义何在

调用Fragment.setRetainInstance(true)将导致Fragment被FragmentManager保留,但是它是否保留了VIEw?我认为不是,但我正在寻求确认.我想不是因为Fragment.onCreateVIEw()仍然被调用(即使onCreate()不是),并且调用getVIEw()返回null.

如果没有视图,那么在配置更改中保留片段的意义何在?原因之一是保留数据,以避免昂贵的重载,但是还有其他方法可以做到这一点.

提前致谢…

解决方法:

Does a retained Fragment retain its VIEw?

这取决于您如何定义它.该片段将再次调用onCreateVIEw(),因此应该为新活动设置其UI.但是,如果您将字段保留在小部件上,则保留这些字段,并且使这些字段指向新的小部件是您的工作,以避免内存泄漏和其他问题.

What is the point of retaining a Fragment across configuration changes if its VIEws aren’t?

保留数据,以避免昂贵的重载.

but there are other ways to do that

只有限制.

例如,在所有其他条件相同的情况下,最好通过已保存的实例状态Bundle保留数据.但是,该捆绑软件无法容纳任何物体(例如相机),并且捆绑软件的大小限制为〜1MB,因此它无法容纳大型物体(例如照片).

术语“保留”的部分原因是保留的片段建立在Activity的旧onRetainNonConfigurationInstance()回调之上.现在是最终的,不能使用,IIRC.

可以将比当前活动寿命更长的数据进行全局缓存(例如,用于数据库/网络I / O结果的POJO缓存,图像缓存).但是,某些东西(例如Camera)并不属于此类的静态数据成员.

您使用Loader框架(例如,通过CursorLoader)检索到的资料会自动保留,但对于CursorLoader以外的内容,Loader框架有其自身的问题.

您不必使用保留的片段.我发现它们相当有用.

总结

以上是内存溢出为你收集整理的保留的片段是否保留其视图?全部内容,希望文章能够帮你解决保留的片段是否保留其视图?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存