2015-07-01 218 views
1

我習慣於HTML開發。現在我開始編寫我的第一個Android應用程序。在我看過的教程中,它看起來像Android開發者喜歡爲每種不同的表單使用新的活動。Android上真正需要多功能嗎?

無所謂我認爲使用單個活動並使用setVisibility(View.VISIBLE | View.INVISIBLE)來顯示/隱藏GUI表單元素是非常可能的(這與我用於HTML-AJAX)。

這種Android開發方式有什麼問題嗎?使用單一活動(進程)還允許使用單例在GUI組件之間共享狀態和數據,而多活動則需要使用額外數據傳遞選定標識的「稍微」複雜的通信系統,...

我想知道單個Activity「模式」有什麼缺點,以及爲什麼Internet上的教程/手冊沒有使用這種技術來開發Android應用程序。

當我無意/有興趣重新使用組件時,片段是否比顯示/隱藏視圖有優勢?

+1

而不是預先加載_all_ UI(可能是_very_時間/資源消耗),您可以輕鬆地將它們交換到同一個「活動」中。例如。 'container.removeView(電流); container.add(NewView的);'。請參閱[本文]的「自定義視圖」部分(https://corner.squareup.com/2014/10/advocating-against-android-fragments.html)。 – nhaarman

+0

你用HTML描述的是一個單頁面應用程序方法。相對較少的Web應用程序是單頁應用程序。你可以構建它們,並且這樣做有一些優點,並且有一些框架可以使它更容易實現。然而,沒有人強迫Web開發人員製作單頁Web應用程序AFAIK,並且製作此類應用程序的成本也很高。如果退後一步,想一想單頁Web應用程序的問題,那麼您可能會發現,與單活動Android應用程序有關的這些問題有類似之處。 – CommonsWare

+0

在這個問題看一看:http://stackoverflow.com/questions/27725473/why-not-always-use-fragments-with-one-activity/27726891#27726891 – kha

回答

2

方法:單活動:

  • 這種做法將展示基於與應用程序的用戶交互/隱藏UI元素。顯示UI元素將從該元素開始繪製View層次結構。這被稱爲佈局通行證。計算性能時,此佈局過程非常昂貴。這不是可行的實施方式。

方法:單活動,多片段:

  • 這種方法也有單人活動,但這一活動的多個片段。每個片段根據應用需求定義新的UI屏幕。更多詳細信息:Android Developer Guide : Fragments這是實現您的要求的更好的方法
1

我認爲沒有錯,但取決於你的應用程序的複雜程度,源代碼很容易變得非常混亂!

0

你想那些代碼發生:

elementXScreenA.setVisibility(false); 
elementYScreenA.setVisibility(false); 
elementZScreenA.setVisibility(false); 

elementXScreenB.setVisibility(true); 
elementYScreenB.setVisibility(true); 
elementZScreenB.setVisibility(true); 

然後,過也許這:

elementXScreenB.setVisibility(false); 
elementYScreenB.setVisibility(false); 
elementZScreenB.setVisibility(false); 

elementXScreenC.setVisibility(true); 
elementYScreenC.setVisibility(true); 
elementZScreenC.setVisibility(true); 

不,我不希望這樣做!

這只是基於你有趣的方式。這樣做有很多缺點,我認爲這種方法沒有任何優勢。我可以列出一些。任何意見將添加到此列表中:

  1. 設計UI。如何在一個xml佈局文件上編寫多佈局? Android Studio不支持這一點。你會看到元素重疊元素
  2. 性能。加載所有的應用程序UI並不是一種智能的方式。你失去了內存,丟失了CPU。儘管你設置了不可見,你的記憶仍然存儲這些信息,並且當元素之間的轉換,不可見的元素仍然計入。
  3. 可維護。我正在與一箇中型項目合作,每天仍然頭痛,並且越來越大的碎片和活動。 (在每個活動/片段的每個佈局的情況下)。當你把所有的佈局整合到一個活動中時,一切都會變得如何?
  4. 合作。一個文件中的所有佈局。所有的應用程序在一個文件中。你怎樣才能在成員之間進行協作?代碼衝突,編輯錯誤... Noooo。停止:)

號停止。當元素需要此元素時,您只需使元素不可見。例如,當用戶向下滾動列表時浮動按鈕,沒有錯誤需要顯示時的錯誤消息文本框,...

+0

Downvoter?有什麼意見嗎?如果您不滿意我的回答,請告訴我。或者,我可以刪除這個「無用」的答案:) – hqt

+0

關於你提到了一些疑惑: - 多佈局可通過編程新的充氣意見完成。那是對的嗎? - 在性能方面,也許container.add /刪除是(多)更好的方法來節省內存(我不知道這種可能性)。 - 至於合作,我認爲這將是更好地隔離不同的開發工作「變成了」不同的活動,但是這不是我在這個momment關注。我想你在這種情況下是完全正確的。 (我剛開始使用Android開發,試圖用一些形式製作一個簡單的應用程序,而且我正在單獨工作)。 – earizon

+0

您仍然可以讓多個人在該項目上工作。只要定義一個UI每個XML文件中設置,然後將它們包括到一個「父」 xml文件 –