Intereting Posts
Как создать экземпляр объекта с использованием значений параметров конструктора по умолчанию в Kotlin? Проекция звезды Котлина на контравариантные типы Почему построение Gradle исходного кода Kotlin приостанавливается на ~ 3 секунды «заставляя System.gc ()»? Могу ли я создать KType из reified T Наследование дженериков Котлина – несоответствие типов Критерии запроса для сопоставления 3 из 6 полей Подстановочные знаки, общие для Kotlin для параметра Kotlin VS Scala: реализовать методы с параметрами первичного конструктора RxJava Observable.create обертывание наблюдаемых подписки Android: Kotlin TypeCastException: null не может быть применено к ненулевому типу kotlin.String Ошибка установки Gradle: Javadoc Создать общий класс с массивом типа Comparable <T> в kotlin? Не удалось обновить значение параметра параметра метода Котлин kotlin получает подписчика для наблюдения наблюдаемого с помощью RxJava2 Котлин создает внутренний класс для лямбда

Пройдет ли lambdas к Observable.subscribe в kotlin приведет к утечкам памяти?

См. Следующий код kotlin:

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { val disposable = Observable.interval(1, TimeUnit.SECONDS, AndroidSchedulers.mainThread()) .subscribe { textView.text = it.toString } } } 

Здесь я передаю лямбда-выражение в методе подписки вместо анонимных внутренних классов. Так требуется ли вызвать disposable.dispose() , чтобы предотвратить утечку памяти? Или выражение лямбда не будет содержать неявной ссылки на экземпляр класса MainActivity.

И если мне это нужно, это лучший способ и почему?

Solutions Collecting From Web of "Пройдет ли lambdas к Observable.subscribe в kotlin приведет к утечкам памяти?"

Я добавил регистратор в Observable.subscribe () следующим образом:

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { val disposable = Observable.interval(1, TimeUnit.SECONDS, AndroidSchedulers.mainThread()).subscribe { Log.d(TAG, "Interval:" + it.toString()) textView.text = it.toString } } } 

и заметил, что даже после выхода из приложения, нажав клавишу «назад», наблюдаемый продолжает работать. Поэтому я добавил следующий код в onDestroy ():

 override fun onDestroy() { disposable.dispose() super.onDestroy() } 

и теперь все работает как ожидалось