隐藏片段是一种 android 设计模式?

Hidden fragments is an android design pattern?

我正在查看 Facebook Android SDK 示例,我遇到了这种奇怪的模式(在 Scrumptious 示例中):应用程序的所有(或几乎)屏幕都是片段,已加载在开始时进入应用程序但隐藏。

稍后(恢复、会话更新等)一次显示一个片段,而所有其他片段保持隐藏状态。

这样只有 1 个 activity 并且所有应用程序屏幕同时出现在 activity 上,只是隐藏而不是显示。

这是 Android 的某种设计模式吗?优点和缺点?

与 activity 一样,碎片也有自己的生命周期。 当它们附加到 activity 并且直到 取消附加。所以这是由 Android 引入的设计模式,也可以很好地使用而不是对屏幕使用不同的 activity。 导航抽屉模式,在开发者网站上作为示例给出,也使用相同的方法。 android 采用相同方法的示例还有很多。

我不会将其称为设计模式,但是是的 - 这很常见。

布局膨胀的主要问题是它可能需要很长时间。准备好屏幕可以减少切换屏幕所需的时间。它还消除了动画问题——主要的用户体验杀手。考虑到 Material 设计,这变得非常重要。

这种方法的明显问题是内存使用。 Facebook 将大量数据显示为列表,所以我猜他们清除了所有适配器,除了屏幕上可见的适配器。

来自Android Developers Tutorial

A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a "sub activity" that you can reuse in different activities).

一个 Fragment 应该总是一个 Activity 的一部分,你可以有 1 个 Activity 和很多 fragments 但是这对你的应用程序来说不是一个好的设计,如果你正在使用所有的 fragments繁重的逻辑必须在 Activity 中完成,片段应该只包含正确的逻辑来呈现和操作它们包含的数据。

总的来说,好好练习MVC。活动应该只是从模型中获取数据并将它们插入视图(片段),或者从视图(片段)中获取事件并告诉数据做某事。不要 运行 URL 控制器中的请求或其他原始数据获取,显然不要 运行 片段中的繁重逻辑。希望对你有帮助...