LeakCanary 告诉我,我的一个 ViewModel 正在泄漏,但在玩了 2 天后,我无法让泄漏消失。
这是获取 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)