2012-04-06 38 views
11

當我開始我的Android項目時,我誤解了應用程序中顯示的每個屏幕必須是新的活動。現在我已經完成了這個項目,我已經在我的模擬器以及一些安卓手機上進行了檢查。到目前爲止,我並沒有目睹任何問題,但是最近我在某處讀到,應用程序中的太多活動是一個非常糟糕的主意。Android中的活動過多?

目前我的應用程序有大約15-20 activities.Ideally我聽到它應該在5-6。我是否需要重新構造我的代碼,或者在完成它的部分就完成每個活動就足夠了?

回答

30

在創建複雜的應用程序時,您肯定需要創建許多活動。所以這取決於你的應用程序需要多少活動。項目中的活動數量不會影響性能。

的影響是由活動在你的Android的堆棧數產生的。所以最好將5-6個活動保存在堆棧中(如果不再需要它們,則完成活動)。

因此,創建儘可能多的活動,您的應用需求,但保持較小的無活動同時開放。

+2

+1爲好的解釋。 – Deva 2012-04-06 15:54:25

+0

如何完成活動? – 2016-01-04 02:04:42

+1

我有15個活動,用戶不斷打開。我是否需要做任何事來結束以前的活動?謝謝! (+1) – 2016-01-04 02:07:53

2

這最終取決於你在做什麼。有些時候,你無法修改視圖足以產生影響。理想情況下,5-6項活動非常棒,但有些情況並非不可行。我已經完成了大約40個不同類別的移動應用程序,以及約18項活動。它只是基於應用程序如何與用戶進行交互而完成的。如果你可以將2或3個活動合併成一個,那很好。它也會幫助文件大小和優化,但如果你不能 - 不要太擔心。

1

我會說15米不同的屏幕= 15個不同的活動。我認爲有些人能夠減少活動的原因之一是因爲引入了碎片。雖然人們會爭論爲什麼在個人活動有效時使用碎片。我想這取決於開發人員的偏好。

+0

除非你正在做的事情,這將眼光放在平板電腦好,使用碎片。 – 2012-04-06 15:33:01

+0

我有15個活動,用戶不斷打開。我是否需要做任何事來結束以前的活動?謝謝! (+1) – 2016-01-04 02:06:42

3

Android系統試圖維持一個應用程序,只要有可能,但最終需要刪除舊的流程,以回收內存爲新的或更重要的進程。這適用於在後臺運行Activity小號......老Activity s的爲你管理,當系統需要回收內存的新工藝被破壞。

話雖這麼說,我覺得有兩件事你應該考慮:

  1. 用戶體驗。你的應用真的需要15-20 Activity嗎?你能否以某種方式減少屏幕的數量?少於Activity s通常更好,因爲當用戶在瀏覽應用程序時,它需要較少的交互。

  2. 代碼設計。雖然每個Activity都有自己的獨立課程,但這並不會限制您在實施應用程序時做出明智的設計決策。例如,您可以嘗試分組Activity,方法是將它們擴展爲abstract class。隨着Android項目規模的擴大,他們變得更難以管理。以這種方式在類似的類中共享代碼將確保您可以對應用程序的核心進行簡單的更改,而不會有太多的麻煩。

+0

我有15個活動,用戶不斷打開。我是否需要做任何事來結束以前的活動?謝謝! (+1) – 2016-01-04 02:06:24

6

如果你的項目有很多活動,但是有些活動是不重要的,這意味着你不需要相繼活動開始的任何活動。

在清單文件組:android:noHistory="true"

實施例:

Activity1 -> Activity2 -> Activity3 -> Activity4..................-> Activity20 

在清單文件:

activity android:name=".Activity1" android:label="@string/app_name" android:noHistory="true" 

如果u活性1使用意圖比startActivity前組面漆()再次調用()

我認爲這可以幫助你