編輯:關於Android編程
這種異常我遇到以下兩種情況:
1. java.lang.IllegalStateException: No wrapped connection.
2.java.lang.IllegalStateException: Adapter is detached.
1.單線程一次執行一個請求可以正常執行,如果使用多線程,同時執行多個請求時就會出現連接超時.
2.HttpConnection沒有連接池的概念,多少次請求就會建立多少個IO,在訪問量巨大的情況下服務器的IO可能會耗盡。
3.通常是因為HttpClient訪問單一實例的不同的線程或未關閉InputStream的httpresponse。
解決前代碼:
public HttpClient httpClient = new DefaultHttpClient(); public void postNoResult(final Context context, final String url, final Mapmaps, final String show) { new Thread() { @Override public void run() { try { HttpPost post = new HttpPost(url); List params = new ArrayList (); for (String key : maps.keySet()) { params.add(new BasicNameValuePair(key, maps.get(key))); } post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); HttpResponse response = httpClient.execute(post);//報錯位置 if (response.getStatusLine().getStatusCode() == 200) { Looper.prepare(); String r = EntityUtils.toString(response.getEntity()); ToastUtil.print_log(r); if (show != null) { ToastUtil.show(context, show); } Looper.loop();} } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}}.start(); }
解決後代碼:
public HttpClient httpClient = getThreadSafeClient();//獲得httpclient線程安全。
public static DefaultHttpClient getThreadSafeClient() {
//獲得httpclient線程安全的方法
DefaultHttpClient client = new DefaultHttpClient();
ClientConnectionManager mgr = client.getConnectionManager();
HttpParams params = client.getParams();
client = new DefaultHttpClient(new ThreadSafeClientConnManager(params,
mgr.getSchemeRegistry()), params);
return client;
}
public void postNoResult(final Context context, final String url, final Map maps, final String show) {
new Thread() {
@Override
public void run() {
try {
HttpPost post = new HttpPost(url);
List params = new ArrayList();
for (String key : maps.keySet()) {
params.add(new BasicNameValuePair(key, maps.get(key)));
}
post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse response = httpClient.execute(post);//報錯位置
if (response.getStatusLine().getStatusCode() == 200) {
Looper.prepare();
String r = EntityUtils.toString(response.getEntity());
ToastUtil.print_log(r);
if (show != null) {
ToastUtil.show(context, show);
}
Looper.loop();}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}}}.start();
}
Android中 多線程下載原理
計算每個線程的下載起始終止位置公式如下文件讀寫方式4中類型工程源碼目錄package cn.itcast.download;import java.io.File;imp
手機休眠時WIFI會斷網嗎 怎麼防止手機休眠時WIFI斷網
有很多人喜歡在手機上下東西,但是有手機在休眠的時候WIFI會斷網,這樣想下載的東西也下載不了了,那麼怎麼避免這種情況出現呢,下面小編就給大家介紹下防止手機休
Android學習筆記之六-圖片的修飾技術
1.ShapDrawable用途:圓角的輸入框 單色背景的按鈕開發步驟:1. 創建drawable文件夾2. 創建一個shap文件. 文件名:業務名_控件名縮寫_bg
解決Android解析圖片的OOM問題的方法!!!
大家好,今天給大家分享的是解決解析圖片的出現oom的問題,我們可以用BitmapFactory這裡的各種Decode方法,如果圖片很小的話,不會出現oom,但是當圖片很大