我的应用程序有一些问题。在市场报告中经常出现带有 HttpClient 错误的 ANR repostr。有
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016) 在 org.apache.http.impl.conn.tsccm.WaitingThread.await(WaitingThread.java:159) 在 org.apache.http。 impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:339) 在 org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1.getPoolEntry(ConnPoolByRoute.java:238) 在 org.apache.http.impl.conn .tsccm.ThreadSafeClientConnManager$1.getConnection(ThreadSafeClientConnManager.java:175) 在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:325) 在 org.apache.http.impl.client.AbstractHttpClient.execute( AbstractHttpClient.java:580) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:512) 在 org.apache.http.impl.client.AbstractHttpClient。执行(AbstractHttpClient.java:490)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022) 在 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413) 在 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor. java:1014) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1074) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574) 在 java.lang.Thread.run(Thread .java:1020)
达尔维克线程:(互斥体:tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)“main”prio=5 tid=1 NATIVE | group="main" sCount=1 dsCount=0 obj=0x40027550 self=0xcfc0 | sysTid=2557 nice=0 sched=0/0 cgrp=默认句柄=-1345006240 | schedstat=( 6440246597 181026702867 12047 ) at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method) at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357) at org.apache.harmony.luni .net.PlainSocketImpl.connect(PlainSocketImpl.java:207) 在 org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:440) 在 java.net.Socket.connect(Socket.java:1013) 在org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 在 org.apache.http.impl.conn.DefaultClientConnectionOperator。
有什么方法可以避免这个错误?也许一些最佳实践如何使用 httpClient?在我的应用程序中,我正在使用:
public ApiImpl() {
this.httpClient = new DefaultHttpClient();
ClientConnectionManager mgr = httpClient.getConnectionManager();
HttpParams params = httpClient.getParams();
this.httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager(params, mgr.getSchemeRegistry()), params);
}
public class Client {
private static Api api;
private static Client instance = null;
public static Client getInstance() {
if (instance == null) {
instance = new Client();
}
return instance;
}
private Client() {
api = new ApiImpl();
}
}
然后在代码中我使用以下
Client client = Client.getInstance();
client.do();