2017-07-01 56 views
4

因此,我有近20個活動,因爲我有近20個佈局,其中有重要的信息(關於應用內容)。那麼,我不得不說在這些活動中大部分是TextViews。活動太多會影響我的表演嗎?

有什麼樣一個「堆棧」,其中活動可放?如果有堆棧,它會在運行應用程序時影響性能嗎?我怎樣才能看到這個堆棧?

有多少活動的應用程序應該有或者它取決於什麼應用程序的目的是規則?

這將是很好,如果活動是如何保持你能解釋一下我或者他們是如何處理的,當我運行我的應用程序。因爲我不希望這20項活動影響我的表現。

+0

害怕活動的數量就像是說:「我不需要在手機上安裝所有我需要的應用程序,因爲它們可能會佔用我內存的一半......」。如果你的用例需要20個不同的佈局,那麼使用20個活動是合理的。 –

+0

這不是問題。我不會爲20項活動「後悔」。但是如果有性能影響,那麼我可以合併1-2個活動。 – Blnpwr

+0

這取決於手機(及其性能)。活動是Android的一個基本概念,20不應該影響性能太多。 –

回答

2

這些20個活動將僅影響您的APK大小。但是如果他們只有一個TextView,這不會很大。

如果用戶瀏覽所有20個活動並將它們保存在一個堆棧中,就像活動一個調用活動B,調用活動C ...一樣,您的活動堆棧將會過大,並且可能android會摧毀最老的一個來釋放資源。有了這個,實現所有活動生命週期並將數據保存在捆綁包中非常重要,因此當用戶返回到活動時,可以從頭開始重新創建它,並且與之前的狀態完全相同。

- 編輯 -

正如評論所指出的@CommonsWare,Android將不會殺了你最古老的活動,請查看這篇文章在他的博客的建議,如果你的情況下,從我描述符合我的回答:https://commonsware.com/blog/2011/10/03/activities-not-destroyed-to-free-heap-space.html

+0

「大概Android將會破壞歷史最悠久的一個免費資源」 - [做不到這一點(https://commonsware.com/blog/2011/10/03/activities-not-destroyed-to-free-heap- space.html)。 – CommonsWare

+0

@CommonsWare感謝您的信息。我總是認爲Android會殺死我的活動。那麼,爲什麼onSaveInstanceState?只是當我的活動在後臺? – jonathanrz

+1

那麼SaveInstanceState方法呢? – Blnpwr

2

有具有一種層狀出20周的活動,或具有在一個活動運行20類之間沒有性能差異。恰恰相反,前者會有更好的表現,因爲您可以動態地添加/刪除活動,而後者將具有所有這些活動的固定負載。

3

第一個問題:

有什麼樣一個 「堆棧」,其中活動可放?如果 有一個堆棧,它會影響運行應用程序時的性能嗎? 我怎樣才能看到這個堆棧?

是的,你可以在一個任務中安排活動,它將它們組織起來。請參閱有關如何使用它們的文檔。

任務是用戶與 執行某項工作時進行交互的一組活動。這些活動排列在一個堆棧中 - 退回堆棧) - 每個活動的打開順序。例如,對於 示例,電子郵件應用程序可能會有一個活動來顯示新消息的列表 消息。當用戶選擇一條消息時,一個新的活動打開到 查看該消息。這個新活動被添加到後退堆棧中。如果用戶按下後退按鈕 ,那麼新的活動結束,並且彈出堆棧。以下視頻提供了 背部堆疊的工作原理。

來源:https://developer.android.com/guide/components/activities/tasks-and-back-stack.html

第二個問題:

有多少活動的應用程序應該有一個規則或者它 取決於什麼應用程序的目的是什麼?

是的,您的應用需要的Activites數量取決於用例,甚至是您的項目結構風格。例如,您也可以使用片段並在需要時將其替換爲一個活動。兩種方式都有prons和cons。

1

這取決於你如何使用它們。如果你學習活動的生命週期上

Activities Lifecycle

,你會看到,如果你把很多的棧上的活動,你會因此鬆動的表現,但如果你摧毀它們,你就不行。你只會影響apk大小。