xmpp连接Android Studio中的NetworkOnMainThreadException [重复]
Posted
技术标签:
【中文标题】xmpp连接Android Studio中的NetworkOnMainThreadException [重复]【英文标题】:NetworkOnMainThreadException in xmpp connection Android Studio [duplicate] 【发布时间】:2016-05-22 06:38:32 【问题描述】:我正在修改一个 android 应用程序。当我运行该应用程序时,所有功能都可以正常工作。但是,在后端,我收到了这个错误:
4008-4008/com.it.testApp W/System.err: android.os.NetworkOnMainThreadException
错误所在的行是 chatServise.java:
BaseActivity.xmppConnection.disconnect();
BaseActivity.xmppConnection = null;
我正在使用 xmpp 和 smack 来提供聊天服务。
应用程序正在其他类中使用这段代码,并且没有问题。当我问开发团队时,他们告诉我这与项目设置有关。该应用程序在其他所有方面都运行良好。我不知道如何解决这个问题。有人可以帮忙吗?
我的代码在我以前的开发人员系统中运行良好。但他不会帮助我。他只说'你必须在服务器nodejs上设置并且需要做连接' 我不明白如何从 android studio 连接到 node.js, 我在这上面花了 3 天时间,但我找不到解决方案。谁能帮忙
我正在添加完整的堆栈跟踪
05-25 11:51:46.433 3845-3845/com.it.example D/SMACK: 11:51:46 AM 连接关闭 (301630643) 05-25 11:51:46.433 3845-1453/com.it.example D/SMACK: 11:51:46 AM SENT (301630643): 05-25 11:51:46.584 3845-3845/com.it.example W/System.err: android.os.NetworkOnMainThreadException 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 com.android.org.conscrypt.OpenSSLSocketImpl.shutdownAndFreeSslNative(OpenSSLSocketImpl.java:1090) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 com.android.org.conscrypt.OpenSSLSocketImpl.close(OpenSSLSocketImpl.java:1085) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at org.jivesoftware.smack.XMPPConnection.shutdown(XMPPConnection.java:456) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at org.jivesoftware.smack.XMPPConnection.disconnect(XMPPConnection.java:482) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at org.jivesoftware.smack.Connection.disconnect(Connection.java:490) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 com.it.example.util.ChatService.onStart(ChatService.java:49) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at android.app.Service.onStartCommand(Service.java:458) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2904) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at android.app.ActivityThread.access$2100(ActivityThread.java:144) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1386) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 android.os.Looper.loop(Looper.java:135) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 android.app.ActivityThread.main(ActivityThread.java:5311) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at java.lang.reflect.Method.invoke(Native Method) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at java.lang.reflect.Method.invoke(Method.java:372) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908) 05-25 11:51:46.594 3845-3845/com.it.example W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
【问题讨论】:
您是否在 SO 中搜索过您的问题? 后端或后台/日志? 后台日志我收到此错误。 【参考方案1】:我认为错误是不言自明的,您正在主线程中运行网络操作。您应该允许所有线程或找到一种更新和有效的方式来运行线程。当您使用此代码时创建活动:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
看at this post。这个问题实际上应该被标记为重复。
【讨论】:
糟糕的解决方法,但对快速测试非常有帮助。谢谢!以上是关于xmpp连接Android Studio中的NetworkOnMainThreadException [重复]的主要内容,如果未能解决你的问题,请参考以下文章
单独线程中的 XMPP 连接 - 仍然被 Android 操作系统关闭?