解析xml文件时出错Android

问题描述:

我已经通过xml解析为我的应用程序添加了版本检查。解析xml文件时出错Android

但是,当我试着执行它时,它在我已经贴在那儿的异常运行:

11-03 19:21:36.809: E/AndroidRuntime(16531): FATAL EXCEPTION: main 
11-03 19:21:36.809: E/AndroidRuntime(16531): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.lookedpath.firstlesson/com.lookedpath.firstlesson.Update}: android.os.NetworkOnMainThreadException 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2099) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.app.ActivityThread.access$600(ActivityThread.java:142) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.os.Looper.loop(Looper.java:137) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.app.ActivityThread.main(ActivityThread.java:4931) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at java.lang.reflect.Method.invokeNative(Native Method) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at java.lang.reflect.Method.invoke(Method.java:511) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at dalvik.system.NativeStart.main(Native Method) 
11-03 19:21:36.809: E/AndroidRuntime(16531): Caused by: android.os.NetworkOnMainThreadException 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at java.net.InetAddress.getAllByName(InetAddress.java:214) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at com.lookedpath.firstlesson.XMLParser.getXmlFromUrl(XMLParser.java:35) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at com.lookedpath.firstlesson.Update.<init>(Update.java:24) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at java.lang.Class.newInstanceImpl(Native Method) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at java.lang.Class.newInstance(Class.java:1319) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.app.Instrumentation.newActivity(Instrumentation.java:1053) 
11-03 19:21:36.809: E/AndroidRuntime(16531): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2090) 
11-03 19:21:36.809: E/AndroidRuntime(16531): ... 11 more 

您可以通过使用获得Eclipse项目的GitHub: https://github.com/LookedPath/lookedpath_android_applications/tree/FirstApp/PrimaLezione

应该是什么我做?

+0

请参阅[NetworkOnMainThreadException]的文档(http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html) –

+1

请显示您的代码的**相关**部分。只是链接到一个代码库不够... – home

您正在收到NetworkOnMainThreadException。这意味着您尝试以某种方式访问​​网络(例如,下载图像)在您的主(UI)线程中。为了更好地响应API 11中的用户界面,此功能被禁用。您需要为您的网络使用不同的线程,最简单的方法是使用AsyncTask。如果您需要保持连接一段时间(例如实时通信),您也可以创建一个新的类,该类延伸ThreadHandlerThread,并自行管理与UI线程之间的通信(使用Handler)。不要忘记UI不是线程安全的。

+0

我改变了我的Update.java这个:http://pastebin.com/LUQp64us 但我有一个奇怪的错误:“跳过xx帧!应用程序可能也在做在主线程上做了很多工作“就好像应用程序为cpu产生了很多负载... – LookedPath

+0

尝试将connect()放入AsyncTask的类而不是主要的线程中,看看是否有帮助。 – Techwolf

+0

错误消失,但应用程序打开空白布局,而不是更新textview,因为它应该这样做... – LookedPath

最好的方法是使用AsyncTask。

http://developer.android.com/reference/android/os/AsyncTask.html

异步任务让u到与UI交互当u fiish下载线程(或可运行)不 让您与UI交互。

如果您需要在UI中进行更改,您需要创建一个处理程序并在该处理程序中运行更改,但AsyncTask会为您实现它。