如何在应用程序进程被杀死时保存演示者实例

问题描述 投票:0回答:1

问题:生存的应用程序进程被终止(以正确的方式保存演示者对象实例,以便以后可以重新使用)

这是一个使用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()中恢复它。正如您所看到的,当我在“createInstance”方法中创建片段时,我会传递我的Presenter。如何保存我的xPresenter,以便我可以在onResume中保留它并且没有错误地进行处理?

android mvp
1个回答
0
投票

如果你的进程被终止,你只能恢复在调用Activity.onSaveInstanceState(Bundle)时保存在bundle中的东西。因此,在实现Serializable / Parcelable接口之前,您无法保存presenter instane(只有基本类型或可序列化/可分区对象可以存储在bundle中)。您可以在Activity.onCreate(Bundle)Activity.onRestoreInstanceState(Bundle)中恢复所有已保存的数据。

© www.soinside.com 2019 - 2024. All rights reserved.