Я использую собственный репозиторий для получения наблюдаемых данных в базе данных комнаты, например:
fun getUsers(): Observable<List<User>> = userDao.getAll()
.toObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError { Logger.error(tag, "error getting users: ${it.message}") }
.doOnNext { Logger.debug(tag, "fetched ${it.size} users") }
В моем пользовательском интерфейсе (фрагмент) я запускаю подписку в onResume
:
override fun onResume() {
super.onResume()
userObserver = repository.getUsers()
.subscribe {
// handle user
}
}
А в onPause
у меня есть:
override fun onPause() {
super.onPause()
userObserver.dispose()
}
Так как каждый раз, когда вызывается repository.getUsers()
, я создаю новый Observable-объект.Может ли это привести к утечке памяти, и мне лучше попытаться повторно использовать наблюдателя, а не утилизировать и воссоздавать его?