Как правильно обработать жизненный цикл фрагмента, если приложение убивается в фоновом режиме? - PullRequest
0 голосов
/ 13 сентября 2018
class MyFragment : BaseFragment {
private lateinit var myPresenter: Contract.MyPresenter
override lateinit var adapter: MyAdapter

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    myPresenter.view = this

    adapter = MyAdapter(
            myPresenter,
            this,
            this
    )
    recyclerView.adapter = adapter
}

Я структурировал этот тип классов во многих местах в моем приложении. Я обнаружил, что пользователи получают много сбоев, и они обычно UninitializedPropertyAccessException. Прежде чем вы скажете, что я должен сделать мою переменную обнуляемой, я думаю, что проблема больше.

Это нормально работает, если вы делаете простое тестирование - откройте приложение и протестируйте. Что ж, если вы откроете тот же фрагмент, нажмите home, а затем закроете процесс приложения и позже попытаетесь повторно открыть приложение, это выдаст ошибку lateinit переменных. Как мы должны обойти эту ошибку? Я использую MVP и MVVM в своих приложениях, так что это означает, что крайне важно сохранить Presenters или ViewModels с его данными, потому что, когда процесс завершается, данные теряются, а затем, когда пользователь пытается взаимодействовать с приложением - если переменная установлена ​​в lateinit - мы получаем ошибку. Если мы установим его как обнуляемый, мы не получим ошибку, но, тем не менее, у нас будет непредвиденное поведение приложения. Мы не хотим этого ...

Как правильно (примеры были бы хорошими) сохранить все связанные с пользовательским интерфейсом вещи (обзоры переработчиков, экземпляры адаптеров и т. Д.) С Экземпляры ViewModel / Presenter?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...