什么是没有用户界面的片段的用例?

Android开发人员指南有一个使用片段的体面部分。 一种使用Fragments的方法是没有UI。 有几个参考文献将其用作背景处理的手段,但是Fragments为这一领域带来了什么优势? 我会在哪里select使用线程,AsyncTasks,处理程序等的片段进行后台处理?

Fragment实例可以持续通过设备configuration更改(如屏幕旋转)。 因为一个Activity会在configuration发生变化时被破坏和重新创build,所以很难devise一个跟踪一个线程或者AsyncTask 。 另一方面,系统负责将持续的Fragment重新附加到configuration更改的另一端(可以说)的正确Activity 。 你仍然会使用一个线程或AsyncTask ,只有现在Fragment持有它。

可能还有其他用途,但是我能想到的就是这个。

我有一大堆相当复杂的代码处理login各种社交networking – 脸谱,谷歌,微博。 这是我需要在不同的活动中重用的代码,因为用户可以从应用程序的不同地方login。 它不属于一个基类活动类,因为你只能从一个类inheritance,而我正在使用这个inheritance来实现其他无关的function。

一个较小的片段对于我的情况来说是完美的,一个片段很适合需要,因为我需要生命周期callback,例如(Facebook在这方面是臭名昭着的,例如需要onActivityResult等)。

我同意格雷格恩尼斯。

我正在开发一个应用程序,它必须执行一系列RESTful API调用。 在大多数情况下,这些只是在一个单一的活动内完成的。 但是我只是使用了一个无头片段来处理一个情况,即两个不同的活动都需要进行多个调用的相同序列,当然,还要处理序列中任何地方的错误。 通过将序列集中在一个片段中,我可以避免重复相当数量的代码。

我们有另外一个api调用,它获取了大量的数据,这些数据在UI线程上被parsing,并且耗时太长。 在后端api的未来版本中,服务器端将会分页数据,我们的应用程序将需要进行一系列api调用才能获得完整的结果。 我认为这将是一个伟大的应用程序保留一个无头的片段。 启动活动可以启动无头碎片和呼叫序列。 如果第一次调用没有错误,那么该活动可以开始下一个活动,以显示初始结果,而片段只是保持突然间并询问服务器下一页的数据。 api调用已经在后台线程上完成了。 我很确定保留的片段将不得不在自己的工作线程上运行。

理解片段的setRetainInstance(boolean)

这些也被称为无头碎片 。 你可以在这里阅读更多