Presenter:何时使用 setRetainInstance(true) 片段开始异步工作

Presenter: when to start async work with setRetainInstance(true) fragment

Fragment生命周期中保留实例的唯一区别是onCreate()不调用。但是在这个状态下 View 还没有膨胀。

什么时候必须用 setRetainInstance(true) 调用 Fragment 的 loadNews()Presenter 之类的方法?我只想 loadNews() 只有在创建 Fragment 的新实例时。

Fragment.onViewCreated() 中执行此操作,因为此时您可以确定 UI(视图)已初始化并准备好显示内容(否则即演示者调用 view.showLoading()将导致 NullPointerException)。但是你必须自己确保 loadingData 只在第一次被调用(即检查是否 bundle == null

如果您使用 Mosby 的 ViewState 功能,则覆盖 onNewViewState() 方法并调用 presenter.loadData()。 Mosby 只会在 View 第一次出现时调用此方法,因此您不必自己检查是否 bundle == null