用于HTTP请求的Android工作线程

时间:2013-07-15 23:22:57

标签: android http queue

我有一个在无限循环中运行的工作线程。如果它的http请求队列为空,则等待。一旦将http请求添加到队列,它就会得到通知并执行此http请求。这很好用,但我对此有一些疑问:

我正在这样做(缩短!):

mHttpClient = new DefaultHttpClient();
mHttpPost = new HttpPost(MyHttpClient.getAbsoluteUrl(url);

while (true)
{
    // Check if the queue is empty, if so -> wait
    StringEntity se = new StringEntity(queue.poll());       
    mHttpPost.setEntity(se);
    HttpResponse response = mHttpClient.execute(mHttpPost);
}

问题是:如果队列有100个项目,这是最有效的方法吗? http连接是一直保持打开状态还是一次又一次地连接?如果它仍然是开放的,那么在应用程序运行时始终保持打开是一个好主意,还是应该关闭它直到将新项目添加到队列中?

第二个问题涉及无限循环。我需要线程在应用程序运行时一直运行,但仍然无限循环看起来不太好。我知道我可以做类似:while(!取消)但我不调用thread.cancel()方法,因为我的意思是没有App.onDestroy()事件我可以调用thread.cancel(),对?你会怎么处理?因为当线程被系统杀死时,我实际上想要将队列保存到“磁盘”,但是如何做呢?

抱歉长篇文章和我的英文不好

0 个答案:

没有答案