¿Pasar lambdas a Observable.subscribe en kotlin dará como resultado pérdidas de memory?

Vea el siguiente código de kotlin:

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

Aquí estoy pasando una expresión lambda en el método de suscripción en lugar de una class interna anónima. Entonces, ¿es necesario llamar a disposable.dispose() para evitar pérdidas de memory? O la expresión lambda no mantendrá una reference implícita a la instancia de la class MainActivity.

Y si necesito desecharlo, ¿cuál es la mejor manera y por qué?

Agregué un registrador al Observable.subscribe () de la siguiente manera:

 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 } } } 

y notó que incluso después de salir de la aplicación presionando la tecla de retroceso, el observable seguía funcionando. Así que agregué el siguiente código a onDestroy ():

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

y ahora todo está funcionando como se esperaba

  • RxJava: cómo devolver el tipo correcto de nulo
  • Comportamiento con Kotlin Higher-Order Functions e interfaces de método único?
  • Datos de caching de request HTTP en RxJava
  • ¿Cuándo no usar el Observable de RxJava?
  • ¿Cómo crear un intervalo infinito observable que emitirá un nuevo object cada intervalo de time?
  • Combinando los resultados de múltiples observables
  • Cómo get un tipo correcto al devolver Template <T?> Desde una function estática con null
  • El método de callback a menudo para reenviar el evento a Observable?
  • No se puede hacer que la API invoque urlfetch.Fetch en un hilo que no sea el hilo de request original ni un hilo creado por ThreadManager
  • EXCEPCIÓN FATAL: RxCachedThreadScheduler-1 cuando el gatillo se deshace. ¿Por qué?
  • Causado por: rx.exceptions.MissingBackpressureException