2012-06-02 80 views
7

雖然我開發了一個包含超過50個活動的應用程序,但它並非Android專業版,這使得應用程序非常龐大。經過8周的開發,現在有一些問題導致應用難以維護和升級。 主要的我負責的是Android:單個活動,多個視圖

  1. 我不能傳遞對象引用活動的構造。事實上,我發現了機制startActivityForResult-Intent-onActivityResult真的限制,並導致許多常量的每個活動的動作和很多switchcase髒代碼,這是真的很難遵循應用程序的流程。

  2. 另一個問題是,我不知道如何管理整個應用的生命週期,因爲每個活動都有自己的生命週期。

我曾與LWUITJ2ME – polish其忽略J2ME的MIDlet(類似Android的活動),並只用一個MIDlet的實現自己的架構和窗口系統作爲進入到應用中的一些成功經驗。我已經想出了與android相同的想法。爲了澄清,我正在考慮一個應用程序,只有一個主要的Activity和其他活動實施爲對象,擴展View對象,這些視圖可以動態添加到主要活動FrameLayout並相互堆疊。活動的邏輯可以在這些類中實現,我甚至找到了以這種方式實現對話的方法。 業務和狀態對象可以傳遞給它們的構造函數,它聽起來很好,忽略了編寫更多代碼的副作用。通過這種方式,偵聽器也可以傳遞給視圖的構造函數,這使得應用程序UI切換和流程管理更加輕鬆。

但問題是:

  • 這是一個好的做法呢?
  • 難道它不會導致性能或內存問題?

我也清楚的

這些都不明確解決有關性能或做法有合理的證據或提供的參考問題

請有人幫我這個

+0

當項目非常龐大時,必須正確設計代碼,將所有常見功能都拔出。更好地構建數據(更好的數據結構)。這些將根據我幫助減少很多代碼。 – sat

+0

其實我已經做到了。儘管android不支持數據綁定,但我遵循了半MVVM模式。主要問題出現在UI層和視圖切換和發光收集。 – anonim

回答

6

有一些流行的應用程序在市場上只有一個或幾個活動。他們使用碎片並切換它們。我寧願將碎片放在你的方法上。雖然我認爲片段太複雜了很多目的,對於您的使用情況,這將是一個很好的解決方案。你的用戶界面行爲應該是分段的,你的活動是控制器部分在你的分段之間傳輸數據。片段也有自己的生命週期。

我不喜歡startActivityForResult要麼。如果我有一系列活動 - 所有提供數據 - 我不知道它們將以何種順序被調用,我更喜歡使用單例類,然後在活動之間使用意圖進行數據傳輸。但是你必須分析你的問題才能得到一個好的解決方案。

+0

其實我也利用單身模式作爲應用程序是單用戶,但我的問題與意圖。我不能序列化偵聽器並將它們傳遞給其他活動,以便根據用戶操作和Fragment進行回調處理,但是我絕對會跟着你,但是當我開始項目時,我並不知道碎片,現在在項目時間線中間,我害怕使用它們,因爲我不完全熟悉它們。我可以在下一個版本的應用程序中使用它們。謝謝 – anonim

+4

在Android上使用單個Activity作爲控制器與其他Android框架之間的中介,構建一個適當的MVC框架有多瘋狂?與使用單頁面應用程序的網絡世界正在發生的事情類似。留言/電子郵件我,如果你有興趣在這方面進行合作。 :) – Marchy

+0

目前我是bussy,但如果你開始這樣一個項目,你可以聯繫我,可能我可能會花費一些時間在未來。 –