我有一个在无限循环中运行的工作线程。如果它的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(),对?你会怎么处理?因为当线程被系统杀死时,我实际上想要将队列保存到“磁盘”,但是如何做呢?
抱歉长篇文章和我的英文不好