当前位置: 首页 > 知识库问答 >
问题:

Android非UI片段使用情况[重复]

孔华池
2023-03-14

我正在浏览关于碎片的Android文档。定义片段UI的布局可以在单独的活动布局中定义。xml文件,或者根本就没有。

根据文件

您还可以使用片段为活动提供背景行为,而无需显示其他UI。

为什么我需要使用另一个片段向活动添加功能,而不是在活动中定义更多的功能?这样一个非UI片段会仅仅为了模块化而使用吗?采取这种做法还有其他原因吗?我希望能举一个例子,说明什么时候适合使用非UI片段。

提前感谢您的协助。

共有1个答案

袁英豪
2023-03-14

我想这是关于保留的片段,在片段中,你可以称之为setRetainedInstance(true),这样你的片段在配置更改期间就不会被重新创建。通常,当您旋转设备时,所有片段都将被重新创建。如果在oncreate()中调用setRetainedInstance(true),则不会重新创建片段实例。

它有什么用您可以将一些数据、数组等放入片段中,在配置更改期间不会将其销毁。您还可以将异步任务放在这样的片段中,在主活动旋转之后,片段中的异步任务仍然能够交付其结果。

片段的另一个有用特性是,您可以轻松地在多个活动中重用它们。这意味着您可以在非UI片段中放置一些公共逻辑。您可以假设使用活动的基类来完成它,但您只能扩展一个类。

谷歌的简单例子(实际上是在保留片段中使用线程):

https://android.googlesource.com/platform/development//master/samples/ApiDemos/src/com/example/android/api/app/FragmentRetainInstance。JAVA

 类似资料:
  • 问题内容: (对Java的新手,旧的C#家伙。) 我注意到Android示例代码中有很多用法。我以为所有Java方法默认都是“虚拟”的? 那怎么办? 例: 问题答案: 这是一个注释,可以用来告诉编译器和IDE,您打算将具有该注释的方法替换为超类方法。它们会发出警告/错误,以防万一您出错,例如,如果您打算覆盖某个方法但拼写错误,如果存在注释,则IDE或编译器会告诉您实际上并 没有 覆盖超类方法,因此

  • 我在一个详细视图中使用ViewPager和FragmentPagerAdapter。这意味着我有一个项目列表,一个屏幕显示单个项目的细节。但用户可以左右滑动来浏览所有项目。这遵循了谷歌滑动视图的指导方针。 但是我想知道一件事。在ListView中,每一行的视图都会被重用。一旦一行从屏幕上滚动出来,它就会被重用为绑定到ListView的适配器的getView方法的转换器视图参数。但是这种重用行为似乎

  • 我完全被如何在android SDK中使用“AnimateCamera”的回调特性难住了。 http://developer.android.com/reference/com/google/android/gms/maps/googlemap.cancelableCallback.html

  • 当使用底部导航视图在片段之间切换时,每次按下按钮时都会重新创建片段。 这是我的代码:

  • 问题内容: 我在此处的注释中读到,更改列表时执行切片分配具有更高的内存效率。例如, 应该比 因为前者会替换现有列表中的元素,而后者会创建一个新列表并重新绑定到该新列表,从而将旧列表保留在内存中,直到可以对其进行垃圾回收为止。对两者进行基准测试以提高速度,后者则要快一些: 这就是我所期望的,因为重新绑定变量应该比替换列表中的元素更快。但是,我找不到任何支持内存使用声明的官方文档,也不确定如何进行基准

  • 我的团队正在使用Amazon Kinesis将其他数据集上的查询结果输出到我们自己的S3存储桶中。 虽然我们根本不经常运行查询,但我们在计费控制台中看到,仅在12月份,到目前为止,我们仍在使用24000个碎片小时。 现在有没有人知道,如果在碎片实际运行时,或者如果碎片刚刚启动并存在,动觉会充电?