Да, это может привести к утечке памяти.
Представьте себе сценарий, в котором вы делаете сетевой вызов с ViewModel
, подключенного к вашему Activity
. Перед завершением вызова действие уничтожается не для изменения конфигурации, а путем вызова finish()
.
Даже если Activity и ViewModel уничтожены, вызов продолжит выполняться.
Чтобы предотвратить это, вы можете изменить ShowsAsynViewModel.java
следующим образом (код Котлина)
// Glogal variable
private lateinit var getShowsNetworkCall: Call<List<Show>>
void loadShows() {
// You can add parameters to the call here
getShowsNetworkCall = service.getShows()
getShowsNetworkCall.enqueue(object: Callback<List<Show>>) {
override fun onResponse(call: Call<List<Trip>>, response: Response<List<Trip>>) {...}
override fun onFailure(call: Call<List<Show>>, t: Throwable) {...}
}
}
override fun onCleared() {
super.onCleared()
getShowsNetworkCall?.cancel()
}