小编rOO*_*b85的帖子

Android ViewModel 泄漏

LeakCanary 告诉我,我的一个 ViewModel 正在泄漏,但在玩了 2 天后,我无法让泄漏消失。

这就是 LeakCanary 显示的原因

这是获取 ViewModel 的 Fragment

viewModel = ViewModelProvider(this).get(ViewBreederViewModel::class.java).apply {
        getStrains(arguments?.getString(BREEDER_ID_KEY, "")!!)
    }
Run Code Online (Sandbox Code Playgroud)

这是视图模型

class ViewBreederViewModel(application: Application) : AndroidViewModel(application) {

private val breederRepository = BreederRepository(application)
val strainList = MutableLiveData<List<MinimalStrain>>()

fun getStrains(breederId: String) {
    viewModelScope.launch {
        breederRepository.getMinimalStrains(breederId).observeForever {
            strainList.value = it
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

这是 BreederRepository:

class BreederRepository(context: Context) {

private val dao: BreederDao
private val breederApi = RetrofitClientInstance.getInstance(context).breederAndStrainIdsApi

init {
    val database: Db = Db.getInstance(
        context
    )!!
    dao = database.breederDao()
}

suspend …
Run Code Online (Sandbox Code Playgroud)

android leakcanary android-room android-viewmodel

1
推荐指数
1
解决办法
1643
查看次数