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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

android中的XMPP连接使用smack

无法在android中的xmpp服务器中连接

XMPP android中的连接因错误而关闭

单独线程中的 XMPP 连接 - 仍然被 Android 操作系统关闭?

如何通过 vb.net 中的 xmpp dll 连接 facebook?

Android 中的 XMPP 聊天:ChatManager 未解决