提问人:Chris Knight 提问时间:7/18/2012 更新时间:12/4/2018 访问量:18118
没有 UI 的 Fragment 的用例是什么?
What is the use case for a Fragment with no UI?
问:
Android 开发者指南中有一个关于使用 Fragment 的不错部分。使用 Fragment 的一种方法是不带 UI。有一些参考资料将其用作后台处理手段,但 Fragments 为这一领域带来了哪些优势?我在哪里选择使用 Fragment over Threads、AsyncTasks、Handlers 等进行后台处理?
答:
实例可以通过设备配置更改(如屏幕旋转)而保留。由于 将在发生配置更改时销毁并重新创建,因此很难设计一个跟踪线程或 .另一方面,系统负责将持久化重新连接到配置更改的另一端(可以这么说)。您仍然会使用线程或,只是现在 持有它。Fragment
Activity
AsyncTask
Fragment
Activity
AsyncTask
Fragment
它可能还有其他用途,但我能想到的就是那个。
评论
app.Service
Fragment
我有一大块相当复杂的代码来处理各种社交网络的登录 - Facebook,Google,Twitter。这是我需要在不同活动中重复使用的代码,因为用户可以从应用程序中的不同位置登录。它不属于基活动类,因为您只能从一个类继承,而我将该继承用于其他不相关的功能。
一个没有ui的片段非常适合我的情况,一个片段非常适合我的需求,因为我需要生命周期回调,例如(facebook在这方面是臭名昭著的,需要,例如onActivityResult等)。
评论
我同意格雷格·恩尼斯(Greg Ennis)的观点。
我现在正在开发一个应用程序,它必须执行一系列 RESTful API 调用。在大多数情况下,这些只是在单个活动中完成。但是我只是使用了一个无头片段来处理一个情况,即两个不同的活动都需要进行相同的多次调用序列,当然,还要处理序列中任何位置的错误。通过将序列集中在一个片段中,我可以避免重复大量代码。
我们还有另一个 api 调用,它取回了大量数据,这些数据现在正在 UI 线程上解析,并且花费的时间太长。在未来版本的后端 api 中,服务器端将对数据进行分页,我们的应用程序将需要进行一系列 api 调用才能获得完整的结果。我认为这对于保留的无头片段来说是一个很好的应用程序。启动活动可以启动无头片段和调用序列。如果第一次调用没有错误,则该活动可以启动下一个活动以显示初始结果,而片段只是继续运行并要求服务器提供下一页数据。api 调用已在后台线程上完成。我很确定保留的片段必须在自己的工作线程上运行。
有关保留片段的更多信息,请参阅了解 Fragment 的 setRetainInstance(boolean)
这些也称为无头碎片。 您可以在此处阅读更多内容
Headless Fragments 的一个非常有用的功能
Headless Fragments,有一个非常有用的功能 - 它们可以 由 FragmentManager 在配置更改期间保留。因为 他们没有任何与他们相关的 UI,他们不必 当用户旋转设备时,detroyed 并再次重建 例。为了激活此行为,只需将 初始化时 Fragment 的保留标志。这是可以做到的 在 Fragment 的 onCreate 方法中。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
上一个:Java 中的排序数组列表
评论