¿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

  • Combina Rx Singles en Observables recursivamente
  • Kotlin: cómo henetworkingar del suscriptor de RxJava
  • Se llama a Android RxJava onNext incluso cuando se anula la suscripción del observador
  • Cómo escribir la testing adecuada para el repository de interfaz reactiva que devuelve Observable solo cuando hay algún evento, cómo simular el desencadenamiento de ese evento
  • Implementando la búsqueda que empuja los resultados a la list tan pronto como estén disponibles usando rxJava
  • Cómo usar la class ContextWrapper con subscribeWith
  • Kotlin: ¿Qué significa "return @"?
  • ¿Por qué mi configuration de RxJava está bloqueando mi subprocess de interfaz de usuario? Trabajar con la callback BluetoothAdapter.startLeScan
  • Cómo fusionar 2 flujos separados, almacenar los datos rellenos y subscribirlos después de un time corto
  • Cómo manejar el event handling errores en un solo lugar en rxjava usando wrapper
  • Función de extensión de llamada dentro de la class Java como cualquier operador de RX