Как сохранить экземпляр презентатора, когда завершается процесс приложения - PullRequest
0 голосов
/ 14 сентября 2018

Проблема: оставшийся в живых процесс приложения завершается (правильное сохранение экземпляра объекта презентатора, чтобы его можно было использовать позже)

Вот простой пример фрагмента, который использует архитектуру MVP.

class xFragment : BaseFragment() {

    private lateinit var xPresenter: xPresenter
    override lateinit var xAdapter: BaseAdapter

    override fun onResume() {
        super.onResume()
        xPresenter.view = this
        xAdapter = xAdapter(
            xPresenter,
            this,
            this
        )
        recyclerView.adapter = contentAdapter
    }

    override fun onPause() {
        super.onPause()
    }

    override fun onDestroy() {
        if (xPresenter.view != null) xPresenter.view = null
        super.onDestroy()
    }

    override fun onDeleteButtonClicked() {
        x.onDeleteButtonClicked()
    }

    companion object {
        @JvmStatic fun createInstance(presenter: xPresenter): xFragment {
            val fragment = xFragment()
            fragment.xPresenter = presenter
            return fragment
    }
}

Я прочитал, что лучшее решение для сохранения чего-либо - это сделать в onPause() и восстановить в onResume(). Как видите, я передаю свой Presenter, когда создаю свой фрагмент в методе "createInstance". Как сохранить xPresenter, чтобы я мог сохранить его позже в onResume и продолжить без ошибок?

1 Ответ

0 голосов
/ 14 сентября 2018

Если ваш процесс был убит, вы можете восстановить только те вещи, которые были сохранены в связке во время вызова Activity.onSaveInstanceState (Bundle) .Таким образом, вы не можете сохранить экземпляр презентатора, пока он не реализует интерфейсы Serializable / Parcelable (в связке могут храниться только примитивные типы или объекты сериализуемого / parcelable).Все сохраненные данные можно восстановить в Activity.onCreate (Bundle) или Activity.onRestoreInstanceState (Bundle) .

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