问题:生存的应用程序进程被终止(以正确的方式保存演示者对象实例,以便以后可以重新使用)
这是一个使用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)时保存在bundle中的东西。因此,在实现Serializable / Parcelable接口之前,您无法保存presenter instane(只有基本类型或可序列化/可分区对象可以存储在bundle中)。您可以在Activity.onCreate(Bundle)或Activity.onRestoreInstanceState(Bundle)中恢复所有已保存的数据。