當Activity關閉後,網絡請求回調的處理

當咱們在使用網絡請求的時候,通常都是經過回調來獲取請求到的數據。對於網絡請求的回調須要注意的幾個點服務器

  1. 好比咱們的回調在Activity中處理數據,當咱們把Activity關閉後,若是獲取到數據時,就算咱們的Activity被finish回調仍是會執行,那麼這個時候咱們在回調裏所作的一些操做,極可能會形成程序的錯誤。因此咱們須要在回調的時候判斷下Activity是否finish.網絡

    isFinishing()//判斷當前的Activity是否關閉,若是活動結束,返回true,不然返回false。
  2. 在一個Activity或Fragment發起網絡請求的時候,當咱們關閉界面後,須要把發出的請求給取消掉,也就是說當咱們發出一個請求的時候,數據尚未獲取到咱們又進入了新的界面,發起了一個新的請求,當請求多起來的時候就會出現阻塞的現象,好比:年級篩選,商品分類等這些請求都是會出現這種狀況的app

  3. 這裏說下不少的時候別太相信服務器返回的數據,反正我是被坑過,因此咱們儘可能對獲取到的數據進行判斷ide

我目前的幾個項目都是使用volley,取消請求的時候能夠經過tag來取消,下面是取消請求的代碼.net

 
  1. /**code

  2. * 取消某個標示的全部請求,通常取消某個界面的全部請求get

  3. *it

  4. * @param tag 標示請求從哪一個界面而來,方便界面退出後取消請求class

  5. */request

  6. public void cancelAll(final String tag) {

  7. getRequestQueue().cancelAll(new RequestFilter() {

  8. @Override

  9. public boolean apply(Request<?> request) {

  10. boolean compareBool = false;

  11. if (!TextUtils.isEmpty(tag)) {

  12. Object objTag = request.getTag();

  13. if (null != objTag) {

  14. compareBool = tag.equalsIgnoreCase(objTag.toString());

  15. }

  16. }

  17. return compareBool;

  18. }

  19. });

  20. }

相關文章
相關標籤/搜索