2017-10-12 4 views
0

私は現在、サービスヘルパークラスを持つアンドロイド用のアプリケーションを開発していますので、サービスを使用するたびに「APIチューザー」コードを書くことなく複数のAPIをターゲットにできます。Android - 内部クラスがサービスの場合、GCは外部クラスを収集しますか?

構造は

  • 外部クラスでは、サービス(extends Object
  • 内部クラス#1ないJobServiceから誘導され、内側のクラス#2 API 21+
  • をターゲットはIntentService由来しますより低いAPIレベルを対象とする。

外部クラスは、サービスに必要なデータを保持し、サービスをスケジュールする責任がある。問題は、外部クラスのインスタンスを作成したアクティビティがサービス開始時に破壊された場合、GCは外部クラスを収集するのでしょうか? (私はOuterClass.this以外の内部クラスのいずれにも参照を保持していません)

答えて

2

外部クラスへの参照があれば、ガベージコレクションはできません。

内部クラスは外部クラスへの参照を保持しているため、内部クラスへの参照があれば間接的に外部クラスへの参照を保持し、ガベージコレクションできません。

関連する問題