成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS開發(fā)ASIHTTPRequest進度追蹤

移動開發(fā) iOS
本文為大家介紹了發(fā)ASIHTTPRequest進度追蹤的內(nèi)容,其中包括追蹤單個request的下載進度,追蹤一系列request的下載進度,追蹤單個request的上傳進度,追蹤一系列request的上傳進度,精確進度條vs簡單進度條,自定義進度追蹤等等內(nèi)容。

本文為大家介紹了發(fā)ASIHTTPRequest進度追蹤的內(nèi)容,其中包括追蹤單個request的下載進度,追蹤一系列request的下載進度,追蹤單個request的上傳進度,追蹤一系列request的上傳進度,精確進度條vs簡單進度條,自定義進度追蹤等等內(nèi)容。

每個ASIHTTPRequest有兩個delegate用來追蹤進度:

downloadProgressDelegate (下載) 和 uploadProgressDelegate (上載)。

進度delegate可以是NSProgressIndicators (Mac OS X) 或者 UIProgressViews (iPhone).ASIHTTPRequest會自適應(yīng)這兩個class的行為。你也可以使用自定義class作為進度delegate,只要它響應(yīng)setProgress:函數(shù)。

  • 如果你執(zhí)行單個request,那么你需要為該request設(shè)定upload/download進度delegate
  • 如果你在進行多個請求,并且你想要追蹤整個隊列中的進度,你必須使用ASINetworkQueue并設(shè)置隊列的進度delegate
  • 如果上述兩者你想同時擁有,恭喜你,0.97版以后的ASIHTTPRequest,這個可以有 ^ ^

IMPORTANT:如果你向一個要求身份驗證的網(wǎng)站上傳數(shù)據(jù),那么每次授權(quán)失敗,上傳進度條就會被重置為上一次的進度值。因此,當與需要授權(quán)的web服務(wù)器交互時,建議僅當useSessionPersistence為YES時才使用上傳進度條,并且確保你在追蹤大量數(shù)據(jù)的上傳進度之前,先使用另外的request來進行授權(quán)。 

追蹤小于128KB的數(shù)據(jù)上傳進度目前無法做到,而對于大于128kb的數(shù)據(jù),進度delegate不會收到***個128kb數(shù)據(jù)塊的進度信息。這是因為CFNetwork庫API的限制。我們曾向apple提交過bug報告(bug id 6596016),希望apple能修改CFNetwork庫以便實現(xiàn)上述功能。

2009-6-21:Apple的哥們兒們真棒!iPhone 3.0 SDK里,buffer大小已經(jīng)被減小到32KB了,我們的上傳進度條可以更精確了。

追蹤單個request的下載進度

這個例子中, myProgressIndicator是個 NSProgressIndicator.

  1. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  2. [request setDownloadProgressDelegate:myProgressIndicator]; 
  3. [request startSynchronous]; 
  4. NSLog(@"Max: %f, Value: %f", [myProgressIndicator maxValue],[myProgressIndicator doubleValue]); 

追蹤一系列request的下載進度

在這個例子中, myProgressIndicator 是個 UIProgressView, myQueue是個 ASINetworkQueue.

  1. - (void)fetchThisURLFiveTimes:(NSURL *)url 
  2.    [myQueue cancelAllOperations]; 
  3.    [myQueue setDownloadProgressDelegate:myProgressIndicator]; 
  4.    [myQueue setDelegate:self]; 
  5.    [myQueue setRequestDidFinishSelector:@selector(queueComplete:)]; 
  6.    int i; 
  7.    for (i=0; i<5; i++) { 
  8.       ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  9.       [myQueue addOperation:request]; 
  10.    } 
  11.    [myQueue go]; 
  12.   
  13. - (void)queueComplete:(ASINetworkQueue *)queue 
  14.    NSLog(@"Value: %f", [myProgressIndicator progress]); 

這個例子中,我們已經(jīng)為ASINetworkQueues調(diào)用過[myQueue go]了。

追蹤單個request的上傳進度

在這個例子中, myProgressIndicator 是個 UIProgressView。

  1. ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
  2. [request setPostValue:@"Ben" forKey:@"first_name"]; 
  3. [request setPostValue:@"Copsey" forKey:@"last_name"]; 
  4. [request setUploadProgressDelegate:myProgressIndicator]; 
  5. [request startSynchronous]; 
  6. NSLog(@"Value: %f",[myProgressIndicator progress]); 

追蹤一系列request的上傳進度

這個例子中, myProgressIndicator是個 NSProgressIndicator, myQueue是個ASINetworkQueue.

  1. - (void)uploadSomethingFiveTimes:(NSURL *)url 
  2.    [myQueue cancelAllOperations]; 
  3.    [myQueue setUploadProgressDelegate:myProgressIndicator]; 
  4.    [myQueue setDelegate:self]; 
  5.    [myQueue setRequestDidFinishSelector:@selector(queueComplete:)]; 
  6.    int i; 
  7.    for (i=0; i<5; i++) { 
  8.       ASIHTTPRequest *request = [ASIFormDataRequest requestWithURL:url]; 
  9.       [request setPostBody:[@"Some data" dataUsingEncoding:NSUTF8StringEncoding]]; 
  10.       [myQueue addOperation:request]; 
  11.    } 
  12.    [myQueue go]; 
  13.   
  14. - (void)queueComplete:(ASINetworkQueue *)queue 
  15.    NSLog(@"Max: %f, Value: %f", [myProgressIndicator maxValue],[myProgressIndicator doubleValue]); 

精確進度條vs簡單進度條

ASIHTTPRequest提供兩種進度條顯示,簡單進度條和精確進度條,使用ASIHTTPRequests 和ASINetworkQueues的showAccurateProgress 來控制。為一個request設(shè)置showAccurateProgress只會對該request有效。如果你為一個隊列設(shè)置showAccurateProgress,那么會影響隊列里所有的request。

簡單進度條

當使用簡單進度條時,進度條只會在一個request完成時才更新。對于單個request,這意味著你只有兩個進度狀態(tài):0%和100%。對于一個有5個request的隊列來說,有五個狀態(tài):0%,25%,50%,75%,100%,每個request完成時,進度條增長一次。

簡單進度條(showAccurateProgress = NO)是ASINetworkQueue的默認值,適用于大量小數(shù)據(jù)請求。

精確進度條

當使用精確進度條時,每當字節(jié)被上傳或下載時,進度條都會更新。它適用于上傳/下載大塊數(shù)據(jù)的請求,并且會更好的顯示已經(jīng)發(fā)送/接收的數(shù)據(jù)量。

使用精確進度條追蹤上傳會輕微降低界面效率,因為進度delegate(一般是UIProgressViews 或NSProgressIndicators)會更頻繁地重繪。

使用精確進度條追蹤下載會更影響界面效率,因為隊列會先為每個GET型request進行HEAD請求,以便統(tǒng)計總下載量。強烈推薦對下載大文件的隊列使用精確進度條,但是要避免對大量小數(shù)據(jù)請求使用精確進度條。

精確進度條(showAccurateProgress = YES)是以同步方式執(zhí)行的ASIHTTPRequest的默認值。

自定義進度追蹤

ASIProgressDelegate 協(xié)議定義了所有能更新一個request進度的方法。多數(shù)情況下,設(shè)置你的uploadProgressDelegate或者 downloadProgressDelegate為NSProgressIndicator或者UIProgressView會很好。但是,如果你想進行更復(fù)雜的追蹤,你的進度delegate實現(xiàn)下列函數(shù)要比 setProgress: (iOS) 或者 setDoubleValue: / setMaxValue: (Mac)好:

這些函數(shù)允許你在實際量的數(shù)據(jù)被上傳或下載時更新進度,而非簡單方法的0到1之間的數(shù)字。

downloadProgressDelegates方法

  • request:didReceiveBytes: 每次request下載了更多數(shù)據(jù)時,這個函數(shù)會被調(diào)用(注意,這個函數(shù)與一般的代理實現(xiàn)的 request:didReceiveData:函數(shù)不同)。
  • request:incrementDownloadSizeBy: 當下載的大小發(fā)生改變時,這個函數(shù)會被調(diào)用,傳入的參數(shù)是你需要增加的大小。這通常發(fā)生在request收到響應(yīng)頭并且找到下載大小時。

uploadProgressDelegates方法

  • request:didSendBytes: 每次request可以發(fā)送更多數(shù)據(jù)時,這個函數(shù)會被調(diào)用。注意:當一個request需要消除上傳進度時(通常是該request發(fā)送了一段數(shù)據(jù),但是因為授權(quán)失敗或者其他什么原因?qū)е逻@段數(shù)據(jù)需要重發(fā))這個函數(shù)會被傳入一個小于零的數(shù)字。
責(zé)任編輯:閆佳明 來源: dreamingwish
相關(guān)推薦

2013-07-21 18:22:59

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:38:00

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:18:00

iOS開發(fā)ASIHttpRequ

2013-07-22 14:15:17

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:33:15

iOS開發(fā)ASIHTTPRequ

2013-07-22 13:54:32

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:32:13

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:25:29

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:43:57

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:09:21

iOS開發(fā)ASIHttpRequ創(chuàng)建和執(zhí)行reques

2013-07-22 13:48:55

iOS開發(fā)ASIHTTPRequ使用Cookie

2013-07-22 14:02:17

iOS開發(fā)ASIHTTPRequ

2013-07-22 14:29:35

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:04:22

ASIHttpRequiOS開發(fā)

2013-03-25 14:13:23

iOSASIHTTPRequ

2011-08-22 10:06:38

IOS開發(fā)ASIHTTPRequHTTP 請求

2013-07-22 14:10:26

iOS開發(fā)ASIHTTPRequ

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-08-12 13:35:23

iPhone文件流ASIHTTPRequ

2013-07-22 14:47:56

iOS開發(fā)iOS5中ASIHtt
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩视频在线观看一区二区 | 婷婷福利视频导航 | 91中文视频 | 色综合久久88色综合天天 | 欧美激情精品久久久久 | 精品欧美久久 | 一级黄色大片 | 亚洲综合无码一区二区 | 一级黄在线观看 | 久久伊人影院 | 日韩一二三区视频 | 欧美专区日韩专区 | 亚洲精品乱码久久久久久9色 | 日韩一级免费看 | 午夜在线观看视频 | 国产清纯白嫩初高生视频在线观看 | 欧美日一区二区 | 国产午夜精品一区二区三区嫩草 | 黄视频欧美 | 91欧美精品成人综合在线观看 | 欧美不卡视频一区发布 | а_天堂中文最新版地址 | 三级国产三级在线 | 国产一区欧美 | 中文字幕在线二区 | 国产精品视频免费观看 | 国产1区 | 日日爽 | 国产精品美女久久久久久久久久久 | 国产精品污污视频 | 久久久久久91香蕉国产 | 欧美亚洲国产日韩 | 亚洲性网 | 久久久久久久久久一区二区 | 精品视频一区二区三区在线观看 | 毛片网站在线观看视频 | 亚洲性人人天天夜夜摸 | 欧美日一区 | 久久6视频 | 亚洲男人的天堂网站 | 国产成人精品久久 |