我正在編寫同時具有「活動」和「服務」組件的Android應用程序。此外,我有一個封裝了一個資源的類,我在活動和服務的幾個地方共享資源。我的問題是我如何確定何時釋放資源。據我瞭解,Java沒有析構函數的概念,所以我不能只在共享對象中創建一個析構函數,當沒有更多的對象引用時將會調用它。 Android具有諸如Activity的onPause和Service的onDestroy之類的功能,儘管技術上不能保證在所有可能的關閉情況下(例如低內存殺手都不會調用這些函數)這些函數都會被調用。在任何情況下,活動都可能被銷燬而不會破壞服務,在這種情況下,仍然可能會引用該資源,所以我不能在這種情況下盲目釋放資源。由於Java沒有析構函數,因此有些源表示創建自己的「close()」類型函數並手動調用它。但似乎這樣工作,我將不得不維護自己的引用計數方案,考慮到Java已經具有GC而不需要這種方案,這似乎相當奇怪。釋放Android應用程序中的共享資源
這裏有什麼合適的解決方案?
你的問題描述不清楚。請更詳細地描述共享資源的含義。是內存還是持久對象?什麼是服務器組件?它是在設備上運行的東西嗎?或在遠程位置的東西? – minhaz
對不起,我的意思是在android.app.Service中的服務。共享資源是一個抽象,由各個類共享一個實例(通過持有相同的引用)和(Java)同步以阻止併發訪問的類表示。 – Michael
聽起來像你來自C的世界。不需要這些類型的Java釋放內存。當沒有對象的引用時,我們有一個垃圾收集器爲我們這樣做。 – cYrixmorten