Hilt でコンテキストを挿入: このフィールドはコンテキスト オブジェクトをリークします 質問する

Hilt でコンテキストを挿入: このフィールドはコンテキスト オブジェクトをリークします 質問する

Hilt を使用して、コンテキストやその他の依存関係を HomeViewModel クラスに挿入しています。すべて正常に動作していますが、この警告が表示されます。リークを防ぐにはどうすればよいですか?

これは私の HomeFragment (HomeViewModel クラスを挿入して使用する場所) です。

@AndroidEntryPoint
class HomeFragment : Fragment() {

private val viewModel: HomeViewModel by viewModels()

....

}

これは警告です:

ヒルト注入ビューモデル

class HomeViewModel @ViewModelInject constructor(
    @ApplicationContext val context: Context,
    private val locationAPI: LocationAPI,
    private val imagesAPI: ImagesAPI
) :
    ViewModel() {
...
}

私が使用しているのは:

//Hilt DI
implementation "com.google.dagger:hilt-android:2.30.1-alpha"
kapt "com.google.dagger:hilt-android-compiler:2.30.1-alpha"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha02"
kapt "androidx.hilt:hilt-compiler:1.0.0-alpha02"

ありがとう!

-- 提案に従って、最初の回答の後に編集しました:

ホームフラグメントは現在次のとおりです:

ここに画像の説明を入力してください

@HiltViewModel
class DetailsViewModel @Inject constructor(
    @ApplicationContext val context: Context,
    private val locationDetailsAPI: LocationAPI) :
    ViewModel() {
...

}

依存関係が次のように更新されました:

//Hilt DI
implementation "com.google.dagger:hilt-android:2.31-alpha"
kapt "com.google.dagger:hilt-android-compiler:2.30.1-alpha"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
kapt "androidx.hilt:hilt-compiler:1.0.0-alpha03"

そして、まだこのリークエラーが発生しています。

何かアイデアはありますか?

ベストアンサー1

その警告に直面した後

ここに画像の説明を入力してください

このアプローチがメモリリークを引き起こすことを保証するためにメモリをプロファイリングすることにしたが、私が発見したことは非常に興味深いものだった。

ここに画像の説明を入力してください

うん、漏れはありませんこれは単なる警告なので、もう気にする必要はありません。楽しいコーディングをしてください。

おすすめ記事