2012-03-01 117 views
0

我正在處理一個需要連接到服務器的應用程序。我還需要通過不同的活動訪問此連接。
爲了達到這個目的,我打算重寫Application類,並在那裏創建連接。這將允許從每個Activity輕鬆進行交互,因爲我只需撥打getApplicationContext().getConnection()即可訪問我自己的連接類。釋放應用程序中的資源?

這種方法的問題是Application類沒有任何onDestroy()方法或類似的我可以釋放連接和任何相關資源。我不認爲讓它閒置直到onLowMemory()被稱爲是最好的方法。
我無法添加自定義的release()方法,因爲我不知道該何時調用它(有兩個活動可以是最後一個活動的活動,並且根據用戶的操作,他們不知道另一個活動是否是當活動的關閉時啓動)。

有沒有一個很好的解決方案,我應該忽略釋放資源(在onLowMemory()之前)還是有更好的方法來實現我想要的(可能是Service,但由於會有幾個調用它的基礎類它可能會對服務產生過度問題?)

回答

0

只需使用Singleton設計模式。創建你的Connection類Singleton讓你可以從不同的活動中訪問連接,並且不會忘記處理多線程。

+0

我曾希望避免使用單身人士,原因有二:首先,我認爲代碼應該更清潔,並且在應用程序上下文中的連接更有意義,其次,因爲我仍然會遇到以單例方式釋放資源的問題,但是單例甚至沒有「onLowMemory( )'方法。 多線程已經被關注:) – Jave 2012-03-01 15:27:18

+0

「有兩個活動可以是最後一個活動,並且取決於用戶的操作,他們不知道當另一個活動關閉時是否要啓動另一個活動」您可以添加靜態計數器來計數活動,並且如果只有一個打開的活動調用release()。 – 2012-03-01 16:04:45

+0

是的,這也是我的想法,可以用應用程序或單例方式完成。我在應用程序中考慮類似引用計數器的情況,並且當不再有任何活動引用時,它會啓動一個計時器,並且如果在時間到達後仍沒有活動引用,則釋放資源。 這個問題有一些很好的討論單身人士與應用程序:http://stackoverflow.com/questions/3826905/singletons-vs-application-context-in-android – Jave 2012-03-02 09:02:52