Android - 如果内部类是服务,GC会收集我的外部类吗?

时间:2017-10-12 22:40:10

标签: java android service garbage-collection

我目前正在开发一款Android应用程序,它有一个"服务助手"因此我可以定位多个API-s而无需编写" API选择器"每次我使用服务时都会编码。

结构是

  • 外类不是服务(extends Object
  • 内部类#1派生自JobService,目标是API 21 +
  • 内部类#2派生自IntentService,目标是较低的API级别

外部类负责保存服务所需的数据并安排服务。问题是:如果创建外部类实例的活动在服务启动时被销毁,GC会收集外部类吗? (除OuterClass.this之外,我不会在任何内部类中引用它

1 个答案:

答案 0 :(得分:2)

如果有任何引用外部类,则无法进行垃圾回收。

内部类包含对外部类的引用,因此如果有任何引用内部类,则它们间接保存对外部类的引用,并且不能进行垃圾回收。