2011-12-08 56 views
1

我實現一個儀表盤加上操作欄UI,像Twitter的應用程序:我應該管理活動堆棧還是允許活動被銷燬?

Twitter Dashboard for Android

儀表盤上的每個按鈕將用戶帶到一個不同的活動。其中一些活動比其他活動更重要,我可以想象用戶通過儀表板合理經常地在它們之間切換。

我覺得我有兩個選擇:

  1. 保持一個活動週期使用意圖國旗去,這樣當用戶返回到儀表板,它只是推動儀表盤活動的堆棧的頂部。然後,當用戶返回到另一個活動時,它會將其推到堆棧的頂部。在操作系統恢復內存之前,沒有任何活動會被銷燬,這很好。

  2. 讓用戶返回儀表板時將活動銷燬,然後再重新創建。

哪種選擇在性能和最佳實踐方面更好?我喜歡選項1,但不知道我是否濫用這些意圖標誌的目的。如果我確實選擇了選項1,我是否也應該覆蓋後退按鈕的功能,以便finish()不被調用?

回答

0

我個人更喜歡第一個選項。這樣,當用戶返回到其他活動時,您會輕鬆記住其他活動的狀態。

例如,如果在兒童活動中用戶滾動某個列表,然後返回儀表板,然後返回到子活動,滾動位置將是他離開它的地方。

關於記憶,我不認爲這是一個問題。例如,我們以選項卡組件爲例(這是一個並行導航控制器到儀表板)。通過選項卡控件,所有的子活動(選項卡活動)也不會被銷燬。

如果內存確實成爲問題,我會結合你的兩個想法。對於不那麼重要的活動,我會實施方法2(將它們摧毀),對於更重要的活動(例如,狀態對用戶來說很重要),我將實施方法1.

+0

您關於該州的觀點是一個好的。我確實需要它來記住我的幾項活動。至於內存方面,我並不擔心,因爲我沒有阻止操作系統在他們看不見時摧毀我的活動。 –