2015-11-03 67 views
0

我有一个登录活动。用户通过电子邮件和密码发送请求登录。 我正在使用Retrofit 2,并且有取消请求的新功能。 (这并不重要,问题更一般)。Android,网络请求,取消onStop,但继续轮换

如果用户后退 - 我想取消请求。但是,如果用户旋转手机 - 我想请求继续。 所以我不能在onStop中调用取消。 当然我可以取消后退请求。但是我认为有更多的案例,当Activity停止时。

我看到的另一种方法是使用android:configChanges="orientation"

我会感谢任何想法和“最佳实践”。

+0

@Androider固定的方向是坏 –

回答

2

一种方法是在Activity的onCreate()中创建一个没有任何UI的Fragment,并在该Fragment的onCreate中启动网络,启动AsyncTask。

而在这个片段的onCreate中,你通过这种方式setRetainIntance(true),当Activity改变方向时片段不会被破坏。

而且你的AsyncTask onPostExecute使用getActivity()

看到这里,最好的例子告知:http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

+0

会发生什么,如果用户按下返回请求? –

+0

然后活动被破坏,因此你的片段太多,所以网络也会停止(你在你的片段的onDestroy中取消你的AsyncTask)。无需重写onBackPressed –

+0

在这种情况下,我可以简单地取消对活动销毁的请求。 但文档说,没有担保onDestroy将被调用。 –