【发布时间】:2017-12-09 13:45:43
【问题描述】:
我尝试使用 Mosby。但是我有一个问题。
我有 Activity (view)、presenter、model 和 viewState。 在活动中我有按钮。当我点击按钮时,我从演示者那里调用方法来加载数据:
presenter.loadData()
加载数据的方法调用2个方法:
1.view.showProgress
model.getData()
方法model.getData() 创建ASYNC http 请求(改造)。请求完成后,从视图中比演示者调用方法,view.hideProgress()。
好的。这个方案很好用。
但我有一个问题。 步骤:
1.点击查看按钮
2.presenter.loadData()
3.在presenter中调用view.showProgress()并启动async http请求
4.最小化应用程序
5.Activity被销毁
6.作为viewState调用方法saveInstanceState()的结果保存当前视图状态(显示进度)
7.5秒后网络请求完成,主持人尝试拨打view.hideProgress()
8.但是Activity不存在,结果什么也没发生。
9.用户返回应用
作为viewState中的结果调用方法
restoreInstanceState()结果进度再次显示,因为此状态保存在 viewState 中(参见第 6 项)。
问题是进度必须隐藏,因为网络请求在应用程序最小化时成功完成(对用户不可见)。
我该如何解决问题?
【问题讨论】:
-
saveInstanceState()不会在应用程序最小化后调用,不是吗?仅在最小化时,但之后 UI 中的所有更改都会丢失