Java http响应出现堆栈溢出错误
我有一个后台工作人员从互联网上获取图像 现在,我在尝试获取捕获后的图像时遇到堆栈溢出 这是我的密码 提取功能Java http响应出现堆栈溢出错误,java,android,backgroundworker,stack-overflow,Java,Android,Backgroundworker,Stack Overflow,我有一个后台工作人员从互联网上获取图像 现在,我在尝试获取捕获后的图像时遇到堆栈溢出 这是我的密码 提取功能 private InputStream fetch(String urlString) throws MalformedURLException, IOException, IllegalStateException, SocketTimeoutException { HttpClient httpClient = new DefaultHttpClient();
private InputStream fetch(String urlString) throws MalformedURLException, IOException, IllegalStateException, SocketTimeoutException {
HttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, TIME_OUT);
HttpConnectionParams.setSoTimeout(params, TIME_OUT);
HttpGet request = new HttpGet(urlString);
HttpResponse response = httpClient.execute(request);
return response.getEntity().getContent();
}
背景工作者
static int tryouts = 0;
/**
* Getting the bitmap from the web asynchronously
* @author orel.z
* @version 1.0
*/
class BitmapWorkerTask extends AsyncTask<String, Void, Bitmap>
{
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap = null;
try
{
InputStream is = fetch(params[0]);
bitmap = BitmapFactory.decodeStream(is);
is.close();
is = null;
tryouts = 0;
}
catch(IOException exception)
{
if(tryouts < 3)
{
doInBackground(params);
tryouts++;
}
else
{
tryouts = 0;
bitmap = null;
}
}
catch (OutOfMemoryError e)
{
if(tryouts < 3)
{
System.gc();
doInBackground(params);
tryouts++;
}
else
{
tryouts = 0;
bitmap = null;
}
}
return bitmap;
}
}
静态int试用=0;
/**
*从web异步获取位图
*@author orel.z
*@version 1.0
*/
类BitmapWorkerTask扩展了AsyncTask
{
@凌驾
受保护位图doInBackground(字符串…参数){
位图=空;
尝试
{
InputStream is=fetch(参数[0]);
位图=BitmapFactory.decodeStream(is);
is.close();
is=null;
试用期=0;
}
捕获(IOException异常)
{
如果(试用期<3)
{
doInBackground(params);
试用++;
}
其他的
{
试用期=0;
位图=空;
}
}
捕获(OutOfMemory错误)
{
如果(试用期<3)
{
gc();
doInBackground(params);
试用++;
}
其他的
{
试用期=0;
位图=空;
}
}
返回位图;
}
}
这是日志
02-26 15:26:31.616: E/Crittercism(16936): java.lang.StackOverflowError
02-26 15:26:31.616: E/Crittercism(16936): at java.lang.String.substring(String.java:1436)
02-26 15:26:31.616: E/Crittercism(16936): at java.util.regex.Splitter.finishSplit(Splitter.java:105)
02-26 15:26:31.616: E/Crittercism(16936): at java.util.regex.Splitter.fastSplit(Splitter.java:75)
02-26 15:26:31.616: E/Crittercism(16936): at java.lang.String.split(String.java:1831)
02-26 15:26:31.616: E/Crittercism(16936): at java.lang.String.split(String.java:1813)
02-26 15:26:31.616: E/Crittercism(16936): at java.net.URI.isValidDomainName(URI.java:577)
02-26 15:26:31.616: E/Crittercism(16936): at java.net.URI.isValidHost(URI.java:545)
02-26 15:26:31.616: E/Crittercism(16936): at java.net.URI.parseAuthority(URI.java:491)
02-26 15:26:31.616: E/Crittercism(16936): at java.net.URI.parseURI(URI.java:409)
02-26 15:26:31.616: E/Crittercism(16936): at java.net.URI.<init>(URI.java:204)
02-26 15:26:31.616: E/Crittercism(16936): at org.apache.http.impl.conn.ProxySelectorRoutePlanner.determineProxy(ProxySelectorRoutePlanner.java:198)
02-26 15:26:31.616: E/Crittercism(16936): at org.apache.http.impl.conn.ProxySelectorRoutePlanner.determineRoute(ProxySelectorRoutePlanner.java:150)
02-26 15:26:31.616: E/Crittercism(16936): at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:596)
02-26 15:26:31.616: E/Crittercism(16936): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293)
02-26 15:26:31.616: E/Crittercism(16936): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-26 15:26:31.616: E/Crittercism(16936): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-26 15:26:31.616: E/Crittercism(16936): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager.fetch(ImageManager.java:405)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager.access$3(ImageManager.java:396)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:319)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616: E/Crittercism(16936): at com.tvincisdk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager
02-26 15:26:31.616:E/Critercism(16936):java.lang.StackOverflower错误
02-26 15:26:31.616:E/Critercism(16936):at java.lang.String.substring(String.java:1436)
02-26 15:26:31.616:E/Critercism(16936):位于java.util.regex.Splitter.finishSplit(Splitter.java:105)
02-26 15:26:31.616:E/Critercism(16936):位于java.util.regex.Splitter.fastSplit(Splitter.java:75)
02-26 15:26:31.616:E/Critercism(16936):at java.lang.String.split(String.java:1831)
02-26 15:26:31.616:E/Critercism(16936):at java.lang.String.split(String.java:1813)
02-26 15:26:31.616:E/Critercism(16936):位于java.net.URI.isvalidDomain(URI.java:577)
02-26 15:26:31.616:E/critercism(16936):位于java.net.URI.isValidHost(URI.java:545)
02-26 15:26:31.616:E/critercism(16936):位于java.net.URI.parseAuthority(URI.java:491)
02-26 15:26:31.616:E/Critercism(16936):位于java.net.URI.parseURI(URI.java:409)
02-26 15:26:31.616:E/Critercism(16936):位于java.net.URI(URI.java:204)
02-26 15:26:31.616:E/Critercism(16936):位于org.apache.http.impl.conn.ProxySelectorRoutePlanner.determineProxySelectorRoutePlanner.java:198
02-26 15:26:31.616:E/Critercism(16936):位于org.apache.http.impl.conn.ProxySelectorRoutePlanner.determinerout(ProxySelectorRoutePlanner.java:150)
02-26 15:26:31.616:E/Critercism(16936):位于org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:596)
02-26 15:26:31.616:E/Critercism(16936):位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293)
02-26 15:26:31.616:E/Critercism(16936):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-26 15:26:31.616:E/Critercism(16936):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-26 15:26:31.616:E/Critercism(16936):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-26 15:26:31.616:E/Critercism(16936):位于com.tvincidk.utils.ImageManager.fetch(ImageManager.java:405)
02-26 15:26:31.616:E/critercism(16936):在com.tvincidk.utils.ImageManager.access$3(ImageManager.java:396)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:319)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBackground(ImageManager.java:329)
02-26 15:26:31.616:E/Critercism(16936):在com.tvincidk.utils.ImageManager$BitmapWorkerTask.doInBa
tryouts++;
return doInBackground(params);
class BitmapWorkerTask extends AsyncTask<String, Void, Bitmap>
{
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap = null;
for (int tryouts=0; tryouts<3; tryouts++) {
try
{
InputStream is = fetch(params[0]);
bitmap = BitmapFactory.decodeStream(is);
is.close();
is = null;
break;
}
catch(IOException exception)
{
bitmap = null;
}
catch (OutOfMemoryError e)
{
System.gc();
bitmap = null;
}
}
return bitmap;
}
}