Hej
En del användare av min applikation Trafikinfo.nu har rapporterat att applikationen i bland hänger sig och rar 100% CPU. Det verkar hända mycket sällan men det verkar vara i samband med att jag försöker hämta data och inget nät finns tillgängligt. Jag har fått in två krashrapporter via market med tillhörande stacktrace. Kraschen sker p.g.a. OutOfMemoryException i DefaultClientConnectionOperator.openConnection.
Jag har försökt återskapa i emulatorer och på fysiska telefoner men inte lyckats. Då inget nätverk finns får jag alltid IOException direkt när jag försöker återskapa.
Någon som varit med om något liknande eller kan se något fel jag gör.
Bifogar stacktrace och koden som anropar execute. Anropen sker från en service som som håller ett WakeLock då den startats från ett intent från en AlarmMangager för återkommande uppdateringar.
Tack på förhand.
Anropande kod:
Kod:
protected JSONObject DownloadJSon(String url) throws FetchInfoException, JSONException {
Log.d(LOGTAG, "In DownloadJSon url = " + url);
String jsonString = null;
try {
final int timeoutSocket = 60000;
final int timeoutConnection = 15000;
setStatus(Status.Downloading);
HttpGet request = new HttpGet(url);
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient client = new DefaultHttpClient(httpParameters);
HttpResponse response = client.execute(request);
int status = response.getStatusLine().getStatusCode();
if (status != HttpStatus.SC_OK) {
String str = getHttpResonseString(response).trim();
if (str.length() > 100)
str = "";
throw new FetchInfoHttpException(url, status, str);
}
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
response.getEntity().writeTo(outStream);
jsonString = outStream.toString();
setStatus(Status.Parsing);
return new JSONObject(jsonString);
} catch (IOException e1) {
Log.e(LOGTAG, "IOException in DownloadJSon.");
Log.e(LOGTAG, "Url: " + url);
Log.e(LOGTAG, "IOException message: " + e1.getMessage());
throw new FetchInfoException(url,
ErrorCodes.IOError, e1);
}
}
Stacktrace:
Kod:
java.lang.OutOfMemoryError
at org.apache.http.util.ByteArrayBuffer.<init>(ByteArrayBuffer.java:53)
at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:82)
at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:93)
at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170)
at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)
at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:173)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at se.peterbjorkman.android.trafikinfo.TrafikInfoNuInfoFetcher.DownloadJSon(TrafikInfoNuInfoFetcher.java:273)
at se.peterbjorkman.android.trafikinfo.TrafikInfoNuInfoFetcher.getSituationsByUrl(TrafikInfoNuInfoFetcher.java:338)
at se.peterbjorkman.android.trafikinfo.TrafikInfoNuCountyFetcher.getSituations(TrafikInfoNuCountyFetcher.java:30)
at se.peterbjorkman.android.trafikinfo.InfoFetchService$ServiceHandler.handleMessage(InfoFetchService.java:282)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.os.HandlerThread.run(HandlerThread.java:60)