2015-11-03 24 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將被調用。 –