xmpp连接中的NetworkOnMainThreadException Android Studio

时间:2016-05-22 06:38:32

标签: android xmpp

我正在修改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:at android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147) 05-25 11:51:46.594 3845-3845 / com.it.example W / System.err:at com.android.org.conscrypt.OpenSSLSocketImpl.shutdownAndFreeSslNative(OpenSSLSocketImpl.java:1090) 05-25 11:51:46.594 3845-3845 / com.it.example W / System.err:at 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:at 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:at 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:at 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:at android.os.Looper.loop(Looper.java:135) 05-25 11:51:46.594 3845-3845 / com.it.example W / System.err:at 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:at 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)

1 个答案:

答案 0 :(得分:1)

我认为错误是自我解释你在主线程中运行网络操作。
你应该允许所有线程或找到一种更新,更有效的方式来运行线程。
使用此代码创建活动时:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

at this post。这个问题实际上应该标记为重复。