Лично? Ни того, ни другого.
Вы должны научиться использовать ViewModel
s, оставить там свой CompositeDisposable
и очистить его методом onCleared()
.
Кроме того, есть некоторые проблемы с вашими примерами:
Случай 1
Вы должны просто добавить одноразовые в compositeDisposable
, не зная, почему вы передать 2 дополнительные лямбды на subscribe
:
compositeDisposable += adsApiService.getVideos()
.subscribeOn(Schedulers.io())
.observeOn( AndroidSchedulers.mainThread())
.subscribe(
{ v -> Log.d("video", v.toString()) },
{ e -> Log.d("video", e.toString()) }
)
В этом случае вы на самом деле неправильно очищаете compositeDisposable
, поскольку он не привязан ни к какому жизненному циклу (Activity
, Fragment
, или ViewModel
)
Случай 2
Нет необходимости ставить вопросительный знак в утверждении:
private var compositeDisposable: CompositeDisposable? = CompositeDisposable()
Этот пример является семантически правильным, хотя api
следует скрывать в ViewModel
(архитектура MVVM) или Presenter
(архитектура MVP) или в любой архитектуре. Знать все в классе (MainActivity
) - ужасная практика, и ее очень сложно поддерживать.