android - 应用进程被杀死时如何保存演示者实例
问题描述
问题:幸存的应用程序进程被杀死(以正确的方式保存演示者对象实例,以便以后可以重用)
这是一个使用 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 中的内容。所以你不能保存演示者实例,直到它实现可序列化/可打包接口(只有原始类型或可序列化/可打包对象可以存储在包中)。您可以在Activity.onCreate(Bundle)或Activity.onRestoreInstanceState(Bundle)中恢复的所有已保存数据。
推荐阅读
- javascript - 我对敌人有一个错误,当他们在我制作的一个小游戏中到达你的角色时
- deep-learning - 使用 saxpy 在时间序列中早期放弃不和谐搜索
- android - Android Gradle 同步失败找不到 support-core-ui.aar
- python - 如何使用 Tkinter 条目搜索栏返回一个单词?
- sql - 如何将 JSON 数组解析为 SQL 表
- google-data-studio - 如何在谷歌数据工作室报告中使用“过滤控制”?
- android - 分支 IO 深度链接
- qt - 重新分配 QSGGeometryNode 顶点数据
- google-chrome - Chrome 在为 Web 开发提供本地服务时使用缓存页面
- python - 基于备用字段在sql查询中组合2列