在我的手机中最小化aplicatoin然后Android销毁活动。 在开发人员选项中,我转为“不要保留活动”。
我尝试实施MVP。
我有按钮的活动。
步骤:
presenter.dowanloadFile()
。这是一个异步http请求。文件大小约为10 MB。view.hideProgress
行。这个案子工作正常。好的。
但假设下一个案例:
presenter.dowanloadFile()
。这是一个异步的http请求。view.hideProgress
问题是:
当用户最小化应用程序(项目 4 )时,是否需要继续 http请求。或者我必须取消当前的http请求。当用户再次返回应用程序时,我必须再次启动新的异步http请求吗?
我想要下一个:当用户返回应用程序并且http请求成功完成然后显示结果。如果请求未完成,则继续等待http响应。
答案 0 :(得分:0)
这取决于你想要发生什么?取消昂贵的请求(10秒很多)似乎很浪费,但是你还需要考虑取消"取消"表示在HTTP请求的上下文中。
例如,如果取消请求,则仅阻止传递结果。比意味着您的文件实际上传但您不再获得该请求结果的回调。如果您的上传线程有对您的视图的引用,也要小心,它将被泄露,直到上传完成。
如果您真的不在乎请求,可以取消它。假设您的服务器足够聪明,可以识别同一文件的其他请求,那么如果重新创建activity
,则不要复制它。
另一种选择是取消请求。然后你需要一些机制让你的主持人"在[{1}}重新创造中幸存下来。
有很多方法可以做到这一点:
Activity
的缓存,如果缓存中存在则不重新创建。presenters
,它们基本上是具有setRetainInstance(true)的片段,以便在重新创建活动时继续存在。fragments
或Service
,并让您的演示者/视图仅订阅上传过程的状态,但实际上并不拥有它。当您决定最适合您的应用程序的时候,您可以单独调查每个选项。