使用多个片段是一个不好的做法吗?

4
我有一个应用程序,有15个不同的部分。我使用单个Activity和FrameLayout,在其中使用NavigationDrawer加载15个不同的片段。在一些父片段下,我还有子片段,其中我使用滑动选项卡布局进行加载。
简而言之,我的应用程序中有很多片段。
问题是,如果我在添加到FrameLayout时将片段添加到BackStack中,只要我的应用程序存在,片段就永远不会被销毁(只有View被销毁,这是按设计预期的行为)。更糟糕的是,如果用户不断悬停在不同的片段上,BackStack的大小会不断增加,这可能会导致内存问题。
因此,我开始搜索并在SO中找到了几个线程,其中一些建议根本不使用片段。但是,如果我想使用自己的Activity设计每个部分,我必须为每个Activity添加NavDrawer(或至少将这些Activity扩展到基本Activity),我不确定是否明智。
这引出了一个问题,将许多片段放在单个活动中是否是一个好的设计?如果可以,我应该将片段添加到BackStack中吗?如果应该,那么内存问题怎么办?最后,有人尝试过在不同活动之间使用NavigationDrawer吗?它有效吗?
对于一系列问题,我深表歉意。
编辑:根据迄今为止的回复,我想澄清一点,我知道这是一种通用的问题,可能会得到基于不同观点的回答。因此,我想明确,我不寻求任何决定性的答案(因为可能没有),而是想开展一次讨论,听取不同观点的声音。

1
这个问题只会得到基于个人意见的回答 - 你已经提到了相反的观点!你认为使用Activities会更有效率吗?请记住,Activities也有一个Activity堆栈。只有通过测试两者并分析性能和内存使用情况,你才能回答自己的问题。Fragment的数量不是问题,重要的是从导航角度如何与它们交互以及它们包含什么,例如图片等。 - Mark
嗯,我同意...我知道我提了一个泛泛的问题。实际上,我正希望得到不同意见的回答,以便与更有经验的程序员核对我的理解。我并不是真的在寻找决定性的答案(因为像你说的那样,没有这样的答案)。当然,在做了研究之后,我选择了Fragments,但只是开启了这个讨论来听取相反的观点。 - abdfahim
1个回答

1

这是一个非常一般的问题。

使用片段是经过充分测试的Android模式。它们为您提供了一个方便的、小型的视图控制器,具有完全管理的生命周期。这很好。

但是,片段并不总是适合工作的正确工具。

我的经验法则是:每当我需要管理复杂视图的生命周期、进行片段动画以及需要不是全屏的活动时,我就使用片段。

如果你发现自己有很多片段,那么问问自己,你能抽象或概括什么(链接1)。例如:大多数列表片段看起来和执行的方式都相同,每行可能不应该在自己的片段中实现。

回退栈是一个UX工具,在您的应用程序业务逻辑中需要以有意义的方式进行管理。它是一种让用户自然导航您的应用程序的工具。因此,将超过4或5个片段推入堆栈中是没有意义的,因为您不应该期望用户记住5个导航决策。如果你发现自己处于大量回退栈的情况下,你可能需要重新思考你的UX设计。


谢谢Vaiden。我知道这是一个比较泛泛的问题,所以我尽可能提供了详细信息(我同意还是有些泛泛)。关键是,我所有的15个部分都是完全独立的,它们在视图上没有任何相似之处(我已经在可以的地方重用了片段)。我选择片段而不是不同的活动的唯一原因是要与导航抽屉一起使用,因为我还没有找到一个适合使用活动的精细设计来使用NavDrawer。 - abdfahim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接