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

总是在Android中使用碎片

禄光霁
2023-03-14

我刚刚开始了解Android中的Fragments。

当您创建一个新的空白项目时,默认情况下还包括一个片段,尽管它并没有真正被使用。我的印象是,谷歌希望你一直使用Fragments,无论应用程序多么简单。这是一个真实的评估,还是你能想出不使用Fragments的理由?

我还觉得奇怪的是,留档表明Frament也可以用于与UI无关的内容。你能给我一个应用程序的例子,它将使用片段,但不提供任何UI?

共有2个答案

麹浩瀚
2023-03-14

这完全取决于你正在开发什么以及如何开发。我不认为每个应用程序都需要有片段,但在许多情况下,它们更容易使用,因为它们可以动态交换,由单个活动管理,等等。例如,假设你的应用程序有一些后台任务正在运行,并且你希望它在用户仍然在应用程序周围“自由漫游”的时候继续运行。在活动中运行该任务并在片段中使用UI将是一种非常简单的方法。该活动还可以在任何时候管理和发送消息和数据给它的“孩子”片段,包括片段本身之间的通信。

至于完全没有用户界面的片段,我不记得遇到过这样的事情,但是您绝对可以在片段中实现与用户界面不直接相关的后台任务和其他方法。同样,这完全取决于你正在开发什么以及如何开发。这里真的没有“对或错”...

柳星晖
2023-03-14

谷歌在推出Honeycomb(3.0)午餐时引入了碎片。正如你所知,蜂巢是第一个支持平板电脑开箱即用的Android版本,他们使用片段来更好地安排屏幕上的UI布局。

使用片段可以比使用活动更好地利用屏幕属性。一个活动可以运行并“命令”共享同一屏幕不动产的多个不同片段,这些片段可以动态交换。

所以是的,谷歌希望你使用片段,这是编写大多数可扩展应用程序的正确方法。

关于第二个问题:

片段可以在配置更改中持久存在,例如屏幕方向更改。当您更改屏幕方向时,活动会被杀死并重新创建,它们可能执行的任何工作都必须重新创建。

如果正确使用片段,那么当您更改屏幕方向时,活动可能会被终止,但片段可以保持其状态,然后将其自身重新连接到新创建的活动,并在其左侧继续。

基本上,如果您有一个从某个活动运行的AsyncTask,并且该活动由于方向更改(例如)而被终止,那么您的AsyncTask现在是无用的。但是,如果您通过一个片段保持异步任务,那么它将继续,因为该片段没有被销毁。

希望这有帮助

 类似资料:
  • 每当一个片段显示给用户时,我需要执行一些代码。 通过查看API,我能看到的最接近的钩子方法是onResume。但是,从我的代码调试来看,当用户选择back-button返回到先前显示的片段时,似乎没有调用onResume。 为了澄清我看到的行为: 我有一个“parent”活动,它在ActionBar中配置选项卡...和2个片段F1和F2。 用户选择一个选项卡,F1被加载到活动中。按下按钮,用户就可

  • 上面的代码在桌面JVM上工作,发送一个帖子请求,在服务器端成功解析,响应200,但是在Android系统上,请求方法保持GET(是的,我检查了它是假的),并导致404异常。官方文档表示,将doOutput设置为true会触发将请求方法设置为POST,但情况似乎并非如此。

  • 我们使用的是片段,我们不需要在重新创建活动时自动恢复它们。但是,Android每次调用->时,都会恢复片段,即使我们对这些片段使用setRetaInstance(false)。 附言。我们知道,在为配置更改重新创建活动的情况下,可以通过在manifest中添加来完成。但是,在自动清理内存的情况下,如何重新创建活动呢?

  • 我可以使用一个片段作为一个活动吗?我已经创建了一个片段,但我希望它有像活动一样的功能,所以我使用片段扩展碎片活动。然而,我有一个带有碎片的导航抽屉。当我更改为“扩展碎片活动”时,我的代码有问题?请给我指路。

  • 我有一些代码,使用JSoup和连接到一个网站成功的Java。 我试图在Android上复制完全相同的东西(作为学习体验)。 我的JAVA代码中没有任何错误,并且已经确认它在JAVA(运行在Netbeans中)中仍然可以工作 我在libs文件夹中有我的JSoup jar~这是一个花了一点时间才找到的问题。 我已经放置了一些edittext.settext(“here”);查看代码的位置。 我试过这两