Мокси фрагмент убивает после неудачного вызова 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

В проекте у меня много типичных реализаций, которые прекрасно работают.

0 ответов

Другие вопросы по тегам