2012-10-03 28 views
2

我在一個有幾個開發人員的項目上工作。 我們在一個相當大的應用程序上工作。 每個開發人員都有幾項活動可以看作整個主應用程序的子應用程序。有沒有辦法創建一個控制我的應用程序的幾個活動的控制實例?

我明白,這可能不是最好的設計,但它存在,我們必須以某種方式處理它。

現在的主要問題是,我們需要一個始終處於活動狀態並檢查I/O等的主設備,並且可以將狀態更改發送給每個子應用程序/活動。就像「我們剛剛失去了互聯網連接」等等。

現在,這個master是一個singleton,它首先被啓動器活動實例化,並且每個activity/sub-app都可以通過傳遞適當的接口來註冊該活動希望獲得什麼更新。

這是工作,但它感覺不對,因爲單身人士需要上下文來訪問系統資源,以確定像互聯網或gps系統狀態。如果單身人員被操作系統所殺,比單純的「getInstance」不會有太大的好處,因爲單身人士會以某種方式需要獲取上下文。我已經閱讀過有關擴展Application類並在那裏創建一個靜態成員上下文的信息,但是這個變量必須是volatile的,並且如果整個應用程序處於crash-after-crash/kill狀態,它將返回null。它感覺不安全。

此外,還應該有一種可能性,主人以某種方式打開用戶對話框以向用戶顯示警告等。這些警告在整個應用程序中看起來應該是一樣的,並且開發人員不必擔心突然彈出的時間或原因。現在,這些消息顯示爲覆蓋所有內容的自定義敬酒。當然,他們需要上下文,如果應用即將關閉,可能會出現問題。

總之,這就是我們所處的困境,我正在尋找解決方案。

那麼如何創建一個安全的主對象或活動(甚至是服務?!),可以將信息傳遞給不同的活動併發布警告等等(甚至可能關閉活動或至少命令它們關閉他們自己不需要註冊can_close接口)。

它應該是安全的,如果在崩潰後android只重新啓動活動的活動,它會以某種方式管理也重新啓動,或者至少具有/提供與以前相同的信息。

每一個想法是值得歡迎的,但應用程序的總檢修,是不可能的(沒有時間和人力)

回答

3

這裏有一些想法:

  1. 所有你需要做的監視創建Service組件。 如果我理解正確,只有在 某些活動正在運行時才需要此服務。所以你可以使它成爲一個bound 服務。讓所有活動bind在啓動 時啓動此服務,並在關閉時解除綁定。該服務將在 第一次活動綁定時開始。
  2. 爲您的所有活動創建一個基類。你可以在這裏寫出所有的通用代碼。例如代碼綁定到並與主服務交換消息 。此類還可以包含用於通知用戶等的實用方法 。因此,所有活動都將使用相同的方法 進行通知。
  3. 對於用戶通知,您可以使用Status Bar Notification或創建Fragment,它可以捕獲,聚合 並顯示通知。您可以在基本Activity類中實現一個通用菜單項 以顯示/隱藏此片段。 如果您使用狀態欄通知,請確保爲您的應用使用了一個彙總的 通知。否則,不同的活動可能會在狀態欄中創建一個混亂的地方 。
+0

我喜歡nr2,不幸的是我們有一個mapactivity,我討厭那些地圖,他們只會造成麻煩。碎片是一個問題,因爲我們運行android 2.3。 – NikkyD

+0

我覺得有必要評論我的最後一個陳述,傻我,只是檢查和MapActivity的擴展活動,它只是不那麼容易找到。所以選項nr2應該像魅力*手指劃過* – NikkyD

+0

更傻我,我不能讓mapactivity延長我的自定義活動...回到一個平方 – NikkyD

0

我想一個解決方案是創建一個作爲主設備的服務。 你將不得不讓它獨立於不同的活動運行(但是不要忘記自己管理它,以便在應用程序不再使用時整齊地關閉它,你不想殺死你的客戶端電池)。 服務無法在界面上進行操作,因此您可能需要向活動廣播消息以命令它們打開對話框。

最後一個想法:敬酒可以,但彈出窗口阻止接口非常糟糕,特別是在移動設備上。

相關問題