android-async-http取消請求

來源:互聯網
上載者:User

標籤:

  1. 前言

           關於android-async-http諸多,相信大家都有一定的瞭解。我這這裡只簡單的說一下它的取消請求這一塊。所有結論都是在同一個Context情況下。

  2. 能被取消請求的請求

    android-async-http能被取消請求的請求必須傳入一個Context,否則則沒有任何效果。以簡單的get請求為例。

get(context, url, params, responseHandler);

        下面是一個網路請求類:

/** * 網路請求 * @author Yang * @date 2015年3月16日 下午2:58:13 */public class FMHttpClient {  private AsyncHttpClient client;  public FMHttpClient() {  client = new AsyncHttpClient(); }  /**  * 擷取AsyncHttpClient對象。  * @return  */ public AsyncHttpClient getAsyncHttpClient(){  return client; }  /**  * Get請求。  * @param context  * @param url  * @param params  * @param responseHandler  * @return RequestHandle  */ public RequestHandle get(Context context,String url, RequestParamparams,ResponseHandlerInterface   responseHandler){  return client.get(context, url, params, responseHandler); }   /**  * 取消網路請求。  * @param context  * @param mayInterruptIfRunning  */ public void cancelRequests(Context context,boolean mayInterruptIfRunning){  client.cancelRequests(context, mayInterruptIfRunning); }   /**  * 取消所有請求。  * @param mayInterruptIfRunning  */ public void cancelAllRequests(boolean mayInterruptIfRunning){  client.cancelAllRequests(mayInterruptIfRunning); } }

  3.    取消請求的三種方式

      (1) 第一種取消請求

cancelRequests(Context context, boolean mayInterruptIfRunning);//在AsyncHttpClient中

      (2) 第二種取消請求

cancelAllRequests(boolean mayInterruptIfRunning);//在AsyncHttpClient中

      (3) 第三種取消請求

cancel(boolean mayInterruptIfRunning) //在RequestHandle中

      下面請看主程式實作類別:

public class MainActivity extends Activity {  @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);    String url1 = "https://www.baidu.com/";  FMHttpClient client = new FMHttpClient();  RequestHandle rd1 = client.get(this, url1, null, new AsyncHttpResponseHandler(){   @Override   public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {    System.out.println("content1 size: "+arg2.length);   }      @Override   public void onFailure(int arg0, Header[] arg1, byte[] arg2,     Throwable arg3) {    System.out.println("onFailure1");   }      @Override   public void onFinish() {    System.out.println("onFinish1");   }     });    String url2 = "http://www.hao123.com/";  RequestHandle rd2 = client.get(this, url2, null, new AsyncHttpResponseHandler(){   @Override   public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {    System.out.println("content2 size: "+arg2.length);   }      @Override   public void onFailure(int arg0, Header[] arg1, byte[] arg2,     Throwable arg3) {    System.out.println("onFailure2");   }      @Override   public void onFinish() {    System.out.println("onFinish2");   }     });  //rd1.cancel(true);  //client.cancelRequests(this, true);  //client.cancelAllRequests(true);  System.out.println("result1-->"+rd1.isCancelled());  System.out.println("result2-->"+rd2.isCancelled());   }}

       兩個或者兩個以上的請求: 

       使用第一種和第二中一樣,則列印結果都為true,兩個請求都被取消。假設需求要求各個取消請求互不影響的話,那這兩鐘方法都不可取,而需求是要求所有請求都被取消,那麼這兩種都可以使用,不過優先選擇第二種。

       使用第三種取消請求,對應其中某一個請求,則此請求將會被取消,而其他請求不被影響。

        一個請求:

        三種方式隨便用。

 

 

 

android-async-http取消請求

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.