2017-10-12 91 views
0

我目前正在开发一个有“服务助手”类的android应用程序,因此我可以定位多个API-s,而无需在每次使用服务时编写“API选择器”代码。Android - 如果内部类是服务,GC是否会收集我的外部类?

结构是

  • 外部类是不是一个服务(extends Object
  • 内部类#1从JobService导出,并且针对API 21+
  • 内部类#2从IntentService衍生并针对较低的API级别

外部类负责保存服务所需的数据并调度服务。问题是:如果创建外部类的实例的活动在服务启动时被破坏,GC是否会收集外部类? (除了OuterClass.this之外,我没有在任何内部类中引用它)

回答

2

如果任何内容对外部类有引用,那么它不能被垃圾收集。

一个内部类拥有对外部类的引用,所以如果任何东西有一个内部类的引用,那么它们间接持有对外部类的引用,并且它不能被垃圾收集。

相关问题