2017-01-12 57 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

相關問題