2011-08-21 98 views
2

我的應用程序中有一個常見問題,我將功能提取到處理此功能的類中,而沒有其他功能。問題是我經常需要一個Activity的實例來完成這個功能,比如讀取文件,訪問數據庫等等,所以我必須將當前的活動傳遞給該實用程序,並且使代碼變得難看。從實用程序類獲取活動

現在我正在研究設置一個持有對「開始」 - 活動的引用的單例,然後將此單例注入到我的utillites中。但是,這是但是,我不能控制一個活動是否被移除或仍然活躍,Android可以。所以我的活動可能還不夠活力而已。

因此,總而言之,我不確定將參考存儲到活動中是否安全,我不希望在每次調用時都傳遞當前活動。解決辦法是什麼。我是偏執狂嗎?提前 羅蘭

回答

3

不要存儲對活動的引用。您可以改爲使用應用程序上下文:只有一個,並且只要您的應用程序處於活動狀態,就會保證可用。爲了更容易訪問,您可能需要定義Application類,併爲其添加getInstance()方法。這種方法的問題在於並非所有需要上下文的操作都可以使用應用程序上下文來執行。任何與觀點相關的東西都有可能失敗。

0

:-)

謝謝你正確的,許多Android操作需要一個Activity或(更通常)只是一個Context。如果您的實用課程沒有超出Context生命週期的引用,那麼您應該沒問題。

我會迴避引用您的「開始」活動的單例,因爲即使後續活動處於活動狀態並且可見,您的應用的第一個活動可能會被破壞。

另一種方法可能是實現自己的抽象類(例如BaseActivity),實現或包裝您的實用程序類的功能,以便您的所有其他活動繼承而不是直接使用Activity。通過這種方式,您可以將管道遠離主要活動的邏輯。