【发布时间】:2019-04-19 10:53:41
【问题描述】:
我已经开发 Android 3 年了,当涉及到类似的场景时,这仍然是一件很难决定的事情。现在,我相信大多数应用程序都有一个多步骤的屏幕/流程。
例如,预订流程。您需要执行几个步骤,例如选择机票、选择座位、选择产品详细信息,然后输入个人详细信息。每个步骤都可能需要上一步的一些数据。
我对此做了很多研究,阅读了很多reddit和SO的帖子,但仍然没有得出结论。
Google 告诉我们为灵活的 UI 使用 Fragment,Jake Wharton 也提到“您可以使用 Fragment,但不要使用它的 backstack。”
我应该使用具有多个片段的单个活动作为步骤,还是使用单独的活动,每个活动代表一个步骤?
目前,我正在使用第一种方法,通过将片段添加到后台堆栈中,并在弹出时恢复其数据状态(用户按回)。但是,我需要在所有文本视图上设置“freezesText”,并确保 recyclerview 适配器位于片段 onCreate 中以保留其状态。可能会有更多的痛苦。
我什至编写了一个自定义片段容器/管理器来无缝维护我的片段。
我看到许多消息来源提到活动转换更昂贵。因此,我编写了两个模拟场景的应用程序来比较性能。两个应用程序提供相同的屏幕和结果,使用 MVP arch 开发。这些应用程序将新闻拉入列表,您可以按它们查看详细信息。
具有两个片段的单个活动:https://github.com/Veeyikpong/fastNewsFragment
单独活动:https://github.com/Veeyikpong/fastNewsActivity
我将它们与 Android studio profiler 进行了比较,发现内存消耗没有太大差异,但单独的活动应用程序的代码大小较小 (10216kb),而带有片段的应用程序为 14000kb。
根据测试,我并没有注意到它们之间有太大的不同,当然,仅用活动来开发要快得多。我做错测试了吗?请就这种情况提出建议。
或者我应该尝试 Google 的新导航组件吗?他们说它将为您处理 FragmentTransactions 的复杂性。
【问题讨论】:
标签: android performance android-fragments android-activity fragment-backstack