繁体   English   中英

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

[英]How to save presenter instance when app process is being killed

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

这是一个使用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中保留它并继续进行而没有错误?

如果您的进程被杀死,则只能还原在调用Activity.onSaveInstanceState(Bundle)期间保存在捆绑软件中的内容。 因此,您不能在实现实现Serializable / Parcelable接口之前保存演示者实例(只能将基本类型或Serializable / parcelable对象存储在bundle中)。 您可以在Activity.onCreate(Bundle)Activity.onRestoreInstanceStateState(Bundle)中还原的所有已保存数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM