2017-10-12 1 views
0

현재 서비스를 사용할 때마다 "API 선택기"코드를 작성하지 않고도 여러 API를 타겟팅 할 수 있도록 "서비스 도우미"클래스가있는 Android 용 앱을 개발 중입니다.안드로이드 - 내부 클래스가 서비스 인 경우 GC가 외부 클래스를 수집합니까?

구조

  • 외부 클래스 (extends Object)가
  • 내부 클래스 # 1 JobService로부터 유도되는 서비스가 아니며, 그리고 API에게 타겟팅 21+
  • # 2 IntentService에서 유래 내부 클래스 낮은 API 레벨을 목표로합니다.

외부 클래스는 서비스에서 필요로하는 데이터를 보유하고 서비스를 예약합니다. 문제는 : 서비스가 시작될 때 외부 클래스의 인스턴스를 만든 활동이 파괴되면 GC가 외부 클래스를 수집합니까? (OuterClass.this을 제외한 어떤 내부 클래스에도이 참조가 없습니다.

답변

2

외부 클래스에 대한 참조가 있으면 가비지 수집 할 수 없습니다.

내부 클래스는 외부 클래스에 대한 참조를 보유하므로 내부 클래스에 대한 참조가 있으면 외부 클래스에 대한 참조를 간접적으로 보유하므로 가비지 수집 할 수 없습니다.

관련 문제