Java 分析xml文件时出错

Java 分析xml文件时出错,java,android,xml,parsing,Java,Android,Xml,Parsing,我已经通过xml解析向我的应用程序添加了版本检查 但当我尝试执行它时,它会在我粘贴到下面的异常中运行: 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.lookedpat

我已经通过xml解析向我的应用程序添加了版本检查

但当我尝试执行它时,它会在我粘贴到下面的异常中运行:

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
11-0319:21:36.809:E/AndroidRuntime(16531):致命异常:main
11-03 19:21:36.809:E/AndroidRuntime(16531):java.lang.RuntimeException:无法实例化活动组件信息{com.lookedpath.firstlesson/com.lookedpath.firstlesson.Update}:android.os.networkMainThreadException
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2099)上
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.app.ActivityThread.access$600(ActivityThread.java:142)
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.os.Handler.dispatchMessage(Handler.java:99)上
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.os.Looper.loop(Looper.java:137)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于android.app.ActivityThread.main(ActivityThread.java:4931)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-03 19:21:36.809:E/AndroidRuntime(16531):在java.lang.reflect.Method.invoke(Method.java:511)
11-03 19:21:36.809:E/AndroidRuntime(16531):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
11-03 19:21:36.809:E/AndroidRuntime(16531):在dalvik.system.NativeStart.main(本机方法)
11-03 19:21:36.809:E/AndroidRuntime(16531):由以下原因引起:android.os.NetworkOnMainThreadException
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于java.net.InetAddress.lookupHostByName(InetAddress.java:385)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于java.net.InetAddress.getAllByName(InetAddress.java:214)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-03 19:21:36.809:E/AndroidRuntime(16531):在com.lookedpath.firstlesson.XMLParser.getXmlFromUrl(XMLParser.java:35)
11-03 19:21:36.809:E/AndroidRuntime(16531):在com.lookedpath.firstlesson.Update。(Update.java:24)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于java.lang.Class.newInstanceImpl(本机方法)
11-03 19:21:36.809:E/AndroidRuntime(16531):位于java.lang.Class.newInstance(Class.java:1319)
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.app.Instrumentation.newActivity(Instrumentation.java:1053)上
11-03 19:21:36.809:E/AndroidRuntime(16531):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2090)
11-03 19:21:36.809:E/AndroidRuntime(16531):。。。还有11个
您可以使用GitHub获得Eclipse项目:


我该怎么办?

您将获得一个
NetworkOnMainThreadException
。这意味着您正试图在主(UI)线程中以某种方式访问网络(例如下载图像)。为了更好地响应API 11中的用户界面,禁用了该选项。您需要为您的网络使用不同的线程,实现这一点的最简单方法是使用。如果您需要保持连接一段时间(例如实时通信),您还可以创建一个扩展
Thread
HandlerThread
的新类,并自己管理该类与UI线程之间的通信(使用
Handler
)。别忘了UI不是线程安全的。

您将得到一个
NetworkOnMainThreadException
。这意味着您正试图在主(UI)线程中以某种方式访问网络(例如下载图像)。为了更好地响应API 11中的用户界面,禁用了该选项。您需要为您的网络使用不同的线程,实现这一点的最简单方法是使用。如果您需要保持连接一段时间(例如实时通信),您还可以创建一个扩展
Thread
HandlerThread
的新类,并自己管理该类与UI线程之间的通信(使用
Handler
)。不要忘记UI不是线程安全的。

最好的方法是使用异步任务

异步任务允许您在下载时与UI交互,而线程(或可运行)不允许 允许您与UI交互


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

最好的方法是使用AsyncTask

异步任务允许您在下载时与UI交互,thr