如果应用程序在后台被杀死,如何正确处理片段的生命周期?

时间:2018-09-13 09:53:49

标签: android kotlin architecture

class MyFragment : BaseFragment {
private lateinit var myPresenter: Contract.MyPresenter
override lateinit var adapter: MyAdapter

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    myPresenter.view = this

    adapter = MyAdapter(
            myPresenter,
            this,
            this
    )
    recyclerView.adapter = adapter
}

我已经在应用程序中的很多地方构造了这种类型的类。我发现用户经常崩溃,他们通常是UninitializedPropertyAccessException。在您说之前,我应该使变量为可空值,我认为问题更大。

如果您执行简单的测试,则可以正常工作-打开应用程序并进行测试。好吧,如果您打开相同的片段,请按Home键,然后终止应用程序进程,稍后再尝试重新打开应用程序,则会使lateinit变量出错。我们应该如何绕过此错误?我在应用程序中使用了MVP和MVVM,因此这意味着用其数据保存PresentersViewModels是至关重要的,因为当进程被杀死时,数据将丢失,而随后当用户尝试删除时,数据将丢失。与应用程序交互-如果变量设置为lateinit-我们会收到错误消息。如果将其设置为可为空,则不会收到错误,但仍然会有意外的应用程序行为。我们不想要那个...

保存所有与UI相关的东西(recyclerviews,适配器实例等)的正确方法(示例很好)是什么? ViewModel / Presenter实例?

0 个答案:

没有答案