cchttpclient中停止网络请求的方法
2014-09-15 16:09 playerboy 阅读(430) 评论(0) 编辑 收藏 举报cchttpclient是异步网络连接,在网速慢的时候,应用退出了该页面,未执行的网络请求还是按照队列请求下去,这导致重新进入页面时候,新的网络请求的得不到快速响应。而cchttpclient类中并没有提供移除请求的方法,查看源码,发现所有的请求都放在s_requestQueue数组中,那么要做的就是在退出界面时候,清空这个请求队列。如下是在httpclient.cpp中添加的禁止所有请求的方法:
void CCHttpClient::stopAllResquest()
{
CCHttpRequest *request = NULL;
while (0 < s_requestQueue->count())
{
pthread_mutex_lock(&s_requestQueueMutex); //Get request task from queue
if (0 != s_requestQueue->count())
{
request = dynamic_cast<CCHttpRequest*>(s_requestQueue->objectAtIndex(0));
s_requestQueue->removeObjectAtIndex(0);
// request's refcount = 1 here
}
pthread_mutex_unlock(&s_requestQueueMutex);
if (NULL != request)
{
request->release();
}
}
}