假設我有一個負責下載和保存文件的單例類(Downloader)。當客戶端請求下載時,他還必須提供回調。我的問題是關於這些回調對象的存儲。對活動的持久引用 - 生命週期
如果我有一個實現回調接口,然後請求多個大型下載活動,將下載器類將無限期舉行的活動的參考。如果在下載完成之前,請求它們的活動將在其生命週期中完成並被銷燬。
在這種情況下,下載程序將阻止垃圾回收商收集活動垃圾。我不介意請求的下載繼續。然而,我想要做的是不知何故檢測到提供的回調應該收集,我正在有效地泄漏它。
是否有像這樣的設計模式?我在想,其中一個Reference
子類將是有用的。
謝謝。
訂閱/取消訂閱雖然有效,但有點限制。就我所知,我還使用非活動對象(如適配器)中的Downloader來封裝活動的生命週期。這或者迫使我爲我的適配器實現onPause/onResume方法並在Activity中調用它們,或者使用其他黑客程序 – zienkikk 2012-02-06 22:02:54
然後,您需要像我一樣的ServiceLocator。我可以在我的應用程序的任何地方解決任何問題,因爲我的ServiceLocator擁有對所有單例的靜態引用。 – Rich 2012-02-06 22:06:24
我想我不明白如何有一個ServiceLocator解決這個問題。 Downloader仍然需要保持對回調的引用,對吧? – zienkikk 2012-02-06 22:15:11