2017-10-12 90 views
0

我目前正在開發一個有「服務助手」類的android應用程序,因此我可以定位多個API-s,而無需在每次使用服務時編寫「API選擇器」代碼。Android - 如果內部類是服務,GC是否會收集我的外部類?

結構是

  • 外部類是不是一個服務(extends Object
  • 內部類#1從JobService導出,並且針對API 21+
  • 內部類#2從IntentService衍生並針對較低的API級別

外部類負責保存服務所需的數據並調度服務。問題是:如果創建外部類的實例的活動在服務啓動時被破壞,GC是否會收集外部類? (除了OuterClass.this之外,我沒有在任何內部類中引用它)

回答

2

如果任何內容對外部類有引用,那麼它不能被垃圾收集。

一個內部類擁有對外部類的引用,所以如果任何東西有一個內部類的引用,那麼它們間接持有對外部類的引用,並且它不能被垃圾收集。

相關問題