gpt4 book ai didi

android - 保留的 fragment 是否保留其 View ?

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:42 25 4
gpt4 key购买 nike

调用 Fragment.setRetainInstance(true) 将导致 FragmentFragmentManager 保留,但它是 View 保留?我认为不是,但我正在寻找确认。我认为不是因为 Fragment.onCreateView() 仍然被调用(即使 onCreate() 不是)并且调用 getView() 返回

如果 View 不是,那么在配置更改时保留 Fragment 有什么意义?一个原因是保留数据,以避免昂贵的重新加载,但还有其他方法可以做到这一点。

提前致谢...

最佳答案

Does a retained Fragment retain its View?

那要看你怎么定义了。该 fragment 将再次调用 onCreateView(),因此它应该为新 Activity 设置其 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 来保留数据。但是,Bundle 无法容纳任意对象(例如,Camera),并且 Bundle 的大小有约 1MB 的限制,所以它不能固定大物体(例如照片)。

使用“保留”一词的部分原因是保留 fragment 构建在 Activity 的旧 onRetainNonConfigurationInstance() 回调之上。那现在是 final 并且不能使用,IIRC。

生命期比当前 Activity 更广泛的数据可以全局缓存(例如,用于数据库/网络 I/O 结果的 POJO 缓存、图像缓存)。然而,有些东西,比如 Camera,不属于这样的静态数据成员。

您使用 Loader 框架(例如,通过 CursorLoader)检索的内容会自动保留,但 Loader 框架有其自身的问题CursorLoader 以外的东西。

不必使用保留 fragment 。我发现它们相当有用。

关于android - 保留的 fragment 是否保留其 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com