У меня есть следующий класс
import android.app.Activity
import io.reactivex.Observable
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
import io.reactivex.functions.Consumer
class Random {
private var timerDisposable: Disposable? = null
val createTimer: (Long) -> Observable<Long> = { offSeconds ->
Observable.timer(
offSeconds,
TimeUnit.SECONDS,
Schedulers.computation()
)
}
private fun doSomething(activity: Activity, seconds: Long) {
timerDisposable?.dispose()
timerDisposable = createTimer(seconds)
.subscribe(
Consumer {
**// Will this leak memory**
changeState(activity)
},
createCrashOnErrorHandler()
)
}
private fun changeState(activity: Activity) {
//display alert dialog from context
}
}
Если действие сохраняется внутренним классом потребителя, который ожидает результата таймера. Что делать, если действие уничтожается, но переданный экземпляр потребителю все еще остается. Пока таймер активен, экземпляр будет жить, в течение которого действие может быть уничтожено. Будет ли это утечка памяти. Как я могу это исправить, чтобы не пропустить контекст