我目前正在开发一个 Android 应用程序,它有一个“服务助手”类,这样我就可以定位多个 API,而不必每次使用服务时都编写“API 选择器”代码。
结构是
- 外部类不是服务(
扩展对象
) - 内部类 #1 派生自
JobService
,并面向 API 21+ - 内部类 #2 派生自
IntentService
,面向较低的 API 级别
外部类负责保存服务所需的数据并调度服务。问题是:如果创建外部类实例的 Activity 在服务启动时被销毁,GC 会收集外部类吗? (除了 OuterClass.this
之外,我没有在任何内部类中保留对它的引用)
最佳答案
如果任何东西引用了外部类,那么它就不能被垃圾收集。
内部类持有对外部类的引用,因此如果任何东西具有对内部类的引用,那么它们就间接持有对外部类的引用,并且它不能被垃圾收集。
关于java - Android - 如果内部类是服务,GC 会收集我的外部类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719942/