2013-04-16 35 views
1

我在運行Gingerbread和Jelly Bean中的應用程序時沒有問題,但在Honeycomb上運行時遇到錯誤。以下是導致錯誤的代碼片段:BufferedReader對象適用於2.3.3和果凍bean,但不適用於4.0.4

BufferedReader in = new BufferedReader(new InputStreamReader(
      url.openStream())); 

其中url是引用公共網站上的文本的URL對象。從那以後,我叫下面的代碼行提取文本:

String inputLine; 
String message = ""; 
while ((inputLine = in.readLine()) != null) 
     message = message + inputLine; 
in.close(); 

它不會讓過去的代碼的BufferedReader行雖然。一旦這行代碼被調用,我得到以下錯誤:

04-16 08:36:50.750: W/System.err(5051): android.os.NetworkOnMainThreadException 
04-16 08:36:50.750: W/System.err(5051):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1119) 
04-16 08:36:50.750: W/System.err(5051):  at java.net.InetAddress.lookupHostByName(InetAddress.java:441) 
04-16 08:36:50.750: W/System.err(5051):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:243) 
04-16 08:36:50.750: W/System.err(5051):  at java.net.InetAddress.getAllByName(InetAddress.java:220) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432) 
04-16 08:36:50.758: W/System.err(5051):  at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 
04-16 08:36:50.766: W/System.err(5051):  at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) 
04-16 08:36:50.766: W/System.err(5051):  at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273) 
04-16 08:36:50.766: W/System.err(5051):  at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168) 
04-16 08:36:50.766: W/System.err(5051):  at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:270) 
04-16 08:36:50.766: W/System.err(5051):  at java.net.URL.openStream(URL.java:462) 
04-16 08:36:50.766: W/System.err(5051):  at com.hasta.upark.Data.getOccupancy(Data.java:39) 
04-16 08:36:50.774: W/System.err(5051):  at com.hasta.upark.MapsActivity.updateMarker(MapsActivity.java:362) 
04-16 08:36:50.774: W/System.err(5051):  at com.hasta.upark.MapsActivity$2.run(MapsActivity.java:159) 
04-16 08:36:50.774: W/System.err(5051):  at android.os.Handler.handleCallback(Handler.java:605) 
04-16 08:36:50.774: W/System.err(5051):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-16 08:36:50.774: W/System.err(5051):  at android.os.Looper.loop(Looper.java:137) 
04-16 08:36:50.774: W/System.err(5051):  at android.app.ActivityThread.main(ActivityThread.java:4697) 
04-16 08:36:50.774: W/System.err(5051):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-16 08:36:50.774: W/System.err(5051):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-16 08:36:50.774: W/System.err(5051):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
04-16 08:36:50.774: W/System.err(5051):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
04-16 08:36:50.774: W/System.err(5051):  at dalvik.system.NativeStart.main(Native Method) 

任何幫助表示讚賞,謝謝!

+0

你在做主線程嗎? – FoamyGuy

+0

不,這是一個後臺線程,每秒更新一次 – Fobos13

+0

你會得到什麼錯誤? – FoamyGuy

回答

0

錯誤的頂部行:android.os.NetworkOnMainThreadException ...它不會像你想象的那樣在後臺線程上發生。仔細檢查一下。

一旦你正確地設置並運行在後臺線程上(我建議使用AsyncTask來簡化這個過程),錯誤應該消失。

+0

http://developer.android.com/reference/android/os/AsyncTask.html這完成了工作完成謝謝! – Fobos13

+0

@FoamyGuy爲什麼上面的代碼在jellybean中工作? – superuser

+0

如果你在主線程上運行它,它會崩潰在果凍豆中。 – FoamyGuy

相關問題