2017-01-12 52 views
3

我有一个应用程序,有15个不同的部分。我使用一个单独的Activity和一个FrameLayout,我使用NavigationDrawer加载15个不同的片段。我也有几个父片段下的子片段,我加载滑动标签布局。正在使用很多碎片是一种不好的做法吗?

因此,总之,我的应用程序中有很多碎片。

问题是,如果我在添加到FrameLayout的同时将碎片添加到BackStack,只要我的应用程序存在(只有View被销毁,这是设计期望的行为),碎片永远不会被破坏。更糟的是,如果用户不停地悬停在不同的碎片上,BackStack的大小不断增加,这可能导致内存问题。

所以,我在这里SO一些suggests against using Fragments at all启动谷歌搜索,发现多个线程。但是,如果我想使用自己的Activity来设计每个部分,我必须将NavDrawer添加到每个活动(或者至少将这些活动扩展到基本活动),我不确定是否审慎。

这留下了问题,在单个活动中是否有很多碎片是一个好设计?如果没关系,我应该将这些片段添加到BackStack中吗?如果我应该,记忆问题呢?最后,有没有人试过跨不同的活动的NavigationDrawer?它有效吗?

我对一系列问题表示歉意。

编辑:根据到目前为止的回复,我想澄清一点,我知道这是一种通用的问题,并可能导致不同的基于观点的回答。所以,我想说清楚,我并不是在寻找任何决定性的答案(因为可能没有),而是我想开一个讨论,从不同的角度来听。

+1

这个问题只会收到意见基础的回应 - 你已经提到了反对意见!你认为使用活动会更有效率吗?记住活动也有一个活动堆栈。只有您可以通过测试和分析性能和内存使用情况来回答自己的问题。碎片的数量不是问题,你如何从导航的角度与它们进行交互以及它们包含的内容是...图像等。 –

+0

嗯,我同意..我知道我问了一个通用的问题。其实,我真的希望得到不同的意见基础的反应,与更多的经验编码人员交叉检查我的理解。我实际上并不是在寻找一个决定性的答案(因为没有,就像你说的那样)。当然,我在做了研究之后选择了Fragments,但是为了听到矛盾的观点而开了这个讨论。 – abdfahim

回答

1

这是一个非常普遍的问题。

使用片段是一个经过充分测试的Android模式。它们为您提供了一个方便的小型View Controller,它具有完全托管的生命周期。那很整齐。

但片段并不总是正确的工具。

我的经验法则是:我使用的片段,每当我需要管理一个复杂的视图的生命周期,对于动画片段,每当我需要一个活动是不是全屏。

如果你发现有很多片段的自己,然后问自己你能abstract or generalise。例如:大多数列表片段看起来和执行相同,并且每行可能不应该在它自己的片段中实现。

返回堆栈是,恕我直言,一个UX工具。它需要以对您的应用程序业务逻辑有意义的方式进行管理。这是允许用户自然浏览您的应用的工具。因此,在堆栈中推送超过4个或5个片段是没有意义的,因为您不应该期望用户记住5个导航决定。如果你发现自己处于大背景下,你可能需要重新考虑你的用户体验设计。

+0

谢谢Vaiden。我知道这是一个普遍的问题,这就是为什么我尽可能多地提供细节(仍然是通用的,我同意)。关键是,我所有的15个部分都是完全独立的,他们没有任何相似之处(我已经在任何地方重新使用片段)。我在不同活动中选择片段的唯一原因是将其与导航抽屉一起使用,因为我还没有找到使用NavDrawer和Activity的细分设计。 – abdfahim

相关问题