我有以下问题:
我不确定如何以最佳方式做到这一点。我当前的方法如下,但给了我一个警告(“无效使用SingleClientConnManager:连接仍然分配。”)。我怀疑我可以重用这个连接,但不知道如何。使用 threadSafeConnManager 似乎不是解决方案,因为我只需要一个连接(我认为:))。
我应该如何针对我的需求优化代码?
下面代码中的runnable位于一个线程( webThread )中, webrequest 是一个设置为某个url的全局变量。设置变量后,将触发 webThread.run()。
private Runnable mSyncInternet = new Runnable() {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
public void run() {
HttpGet httpGet = new HttpGet(webrequest);
try {
HttpResponse response = httpClient.execute(httpGet, localContext);
} catch (ClientProtocolException e) {
sendMessageToUI(MSG_NO_INTERNET, 1);
} catch (IOException e) {
sendMessageToUI(MSG_NO_INTERNET, 1);
}
}
};
提前非常感谢!
答案 0 :(得分:0)
就在今天,我找到了blog解决SingleClientConnManager问题的方法:
public static DefaultHttpClient getThreadSafeClient() {
DefaultHttpClient client = new DefaultHttpClient();
ClientConnectionManager mgr = client.getConnectionManager();
HttpParams params = client.getParams();
client = new DefaultHttpClient(new ThreadSafeClientConnManager(params,
mgr.getSchemeRegistry()), params);
return client;
}
我试过了,它运作得很好!