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

标签 java android service garbage-collection

我目前正在开发一个 Android 应用程序,它有一个“服务助手”类,这样我就可以定位多个 API,而不必每次使用服务时都编写“API 选择器”代码。

结构是

  • 外部类不是服务(扩展对象)
  • 内部类 #1 派生自 JobService,并面向 API 21+
  • 内部类 #2 派生自 IntentService,面向较低的 API 级别

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

最佳答案

如果任何东西引用了外部类,那么它就不能被垃圾收集。

内部类持有对外部类的引用,因此如果任何东西具有对内部类的引用,那么它们就间接持有对外部类的引用,并且它不能被垃圾收集。

关于java - Android - 如果内部类是服务,GC 会收集我的外部类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719942/

相关文章:

java - Netty 服务器处理多个客户端

java - 在 AngularJs 中单击提交按钮时如何发送选定的文件列表

java hibernate 问题

android - 使用 Signature Android glide 查找缓存图像

java - 如何为特定矩形使用不同的填充颜色

c# - 是否可以识别exe是否是Windows服务?

android - 即使我的应用程序未打开,当用户启用 wifi 时,我该如何做某事(比如开始我的第二项 Activity )?

angular - Angular 2+ 中的服务和组件有什么区别?

java - 如何使 Java 线程获得相当数量的 CPU 时间

java - 如何在Android中将捕获的图像压缩到特定大小?