Мокси фрагмент убивает после неудачного вызова API
Я использую чистую архитектуру, на уровне представления я использую Moxy MVP, для потока данных RxJava2. Проблема с выполнением варианта использования. Когда я вызываю прецедент, он возвращает DisposableObserver. Если вызывается onNext(), все работает отлично, но если вариант использования возвращает ошибку (по какой-то причине, например, при сетевом подключении), фрагмент уничтожается и воссоздается немедленно.
BaseFragment:
abstract class BaseFragment : MvpAppCompatFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return (inflater.inflate(getLayoutResource(), container, false) as View)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
bindUI()
}
protected abstract fun bindUI()
abstract fun getLayoutResource(): Int
protected fun <C> getComponent(componentType: Class<C>): C {
return componentType.cast((activity as HasComponent<*>).component)
}
}
Целевой фрагмент:
class NotesListFragment : BaseFragment(), NotesListView {
@InjectPresenter lateinit var presenter: NotesListPresenter
@Inject lateinit var notesListAdapter: NotesListAdapter
override fun bindUI() {
getComponent(MainComponent::class.java).inject(this)
presenter.getAssignmentsWithNotes()
}
override fun getLayoutResource(): Int = R.layout.fragment_notes_list
}
Целевой ведущий:
@InjectViewState
class NotesListPresenter : BasePresenter<NotesListView>() {
@Inject lateinit var router: Router
@Inject lateinit var assignmentsWithNotesUseCase: GetAssignmentsWithNotesUseCase
private var assignmentsWithNotes = mutableListOf<AssignmentWithNote>()
init {
BTApplication.getApplicationComponent()?.mainComponent()?.inject(this)
}
fun getAssignmentsWithNotes() {
assignmentsWithNotesUseCase.execute(
onNext = {
assignmentsWithNotes.addAll(it)
},
onError = {
Timber.e(it) //problem appears here
})
}
}
Вот что я вижу в журналах:
E / NotesListFragment: onCreate NoteListFragment
D / OkHttp: -> GET http:/api/assignments/notes?start=0&rows=25
D / OkHttp: <- HTTP FAILED: java.net.UnknownHostException: невозможно разрешить хост
E / NotesListFragment: при уничтожении NotesListFragment E/NotesListFragment: при создании NoteListFragment
D / OkHttp: -> GET http:/api/assignments/notes?start=0&rows=25
В проекте у меня много типичных реализаций, которые прекрасно работают.