Android异常 java.lang.IllegalStateException解决方法

Android异常详情介绍

这种异常我遇到以下两种情况:
1. java.lang.IllegalStateException: No wrapped connection.
2.java.lang.IllegalStateException: Adapter is detached.

原因:

1.单线程一次执行一个请求可以正常执行,如果使用多线程,同时执行多个请求时就会出现连接超时.
2.HttpConnection没有连接池的概念,多少次请求就会建立多少个IO,在访问量巨大的情况下服务器的IO可能会耗尽。
3.通常是因为HttpClient访问单一实例的不同的线程或未关闭InputStream的httpresponse。

解决方案:获得httpclient线程安全

解决前代码:

public HttpClient httpClient = new DefaultHttpClient(); public void postNoResult(final Context context, final String url, final Map<String, String> maps, final String show) { new Thread() { @Override public void run() { try { HttpPost post = new HttpPost(url); List<NameValuePair> params = new ArrayList<NameValuePair>(); 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<String, String> maps, final String show) { new Thread() { @Override public void run() { try { HttpPost post = new HttpPost(url); List<NameValuePair> params = new ArrayList<NameValuePair>(); 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(); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-24 15:03:10

Android异常 java.lang.IllegalStateException解决方法的相关文章

Android异常 java.lang.IllegalStateException解决方法_Android

Android异常详情介绍 这种异常我遇到以下两种情况: 1. java.lang.IllegalStateException: No wrapped connection. 2.java.lang.IllegalStateException: Adapter is detached. 原因: 1.单线程一次执行一个请求可以正常执行,如果使用多线程,同时执行多个请求时就会出现连接超时. 2.HttpConnection没有连接池的概念,多少次请求就会建立多少个IO,在访问量巨大的情况下服务器的I

jsp页面跳转时的异常...java.lang.IllegalStateException!求解中....

问题描述 其他项目用<body><c:redirect url="register.jsp"></c:redirect>这么一代码就没错,但是就当前的项目出现问题....项目技术:S2SH+jquery+FCKeditor.不知道是不是配置时产生的问题...不懂问题出在哪,又因为代码量太大...未能贴出具体代码....错误打印如下:信息: Server startup in 24854 ms2010-12-6 12:32:26 org.apache.

eclipse使用LWUIT时报错java.lang.NoClassDefFoundError解决方法

本人的环境:eclipse3.3+eclipseme1.7.9+wtk2.5 测试源程序: import com.sun.lwuit.Display; import com.sun.lwuit.Form; import com.sun.lwuit.Label; import com.sun.lwuit.layouts.BorderLayout; import com.sun.lwuit.plaf.UIManager; import com.sun.lwuit.util.Resources;  

Android Force Close 出现的异常原因分析及解决方法_Android

一.原因: forceclose,意为强行关闭,当前应用程序发生了冲突. NullPointExection(空指针),IndexOutOfBoundsException(下标越界),就连Android API使用的顺序错误也可能导致(比如setContentView()之前进行了findViewById()操作)等等一系列未捕获异常 二.如何避免 如何避免弹出Force Close窗口 ,可以实现Thread.UncaughtExceptionHandler接口的uncaughtExcepti

java.lang.OutOfMemoryError: Java heap space 解决方法

java.lang.OutOfMemoryError: Java heap space 解决方法 这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个. 1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m 2,如果用的tomcat,在windows下,可以在 C:/tomcat5.5.9/bin/catalina.bat  中加上: set JAVA_OPTS=-Xms64m -Xmx256

Android Caused by: java.lang.ClassNotFoundException解决办法

Android Caused by: java.lang.ClassNotFoundException解决办法 出现问题: 08-13 18:29:22.924: E/AndroidRuntime(1875): Caused by: Java.lang.ClassNotFoundException:XXXXX    in loader dalvik.system.PathClassLoader[/data/app/XXXX.apk] 我想大家经常因为疏忽出现ClassNotFoundExcept

javaweb-求大神~ java.lang.IllegalStateException异常代码如下

问题描述 求大神~ java.lang.IllegalStateException异常代码如下 java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435) at cn.cms.filter.LoginFilter.doFilter(LoginFilter.java:55) at org.apache.catalina.co

tomcat6下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法_JSP编程

1.在tomcat6.0下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法 在tomcat6.0下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的原因. 具体的原因就是: 在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse res

android-为什么java.lang.IllegalStateException:没有事务挂起

问题描述 为什么java.lang.IllegalStateException:没有事务挂起 我开发了一个android应用程序.在大多数的手机设备上都可以正常运行.但是有些用户发送错误报告. java.lang.RuntimeException: An error occured while executing doInBackground()at android.os.AsyncTask$3.done(AsyncTask.java:200)at java.util.concurrent.Fu