Using smack jabber library 4.3.1, my android program takes 84 seconds to connect, which is fairly long. I have seen a discussion in a forum about a similar problem, but it affected earlier versions of SMACK.
What am I doing wrong?
Below is the smack the code am using to connect.
XMPPTCPConnectionConfiguration cc= XMPPTCPConnectionConfiguration.builder()
.setCompressionEnabled(true)
.setUsernameAndPassword("smackuser","ilovesmack")
.setXmppDomain("xmpp.jp")
.setSecurityMode(ConnectionConfiguration.SecurityMode.required)
.build();
connection=new XMPPTCPConnection(cc);
connection.addConnectionListener(MainActivity.this);
connection.connect();
connection.login();
simply call once. For example in Application class
AndroidSmackInitializer.initialize(Context);
before any XMPP connections
[OLD ANSWER. DONT USE]
I found the problem. SMACK jabber uses minidns and minidns has a recently fixed bug on android 8. I solved the problem by using the code below. Thanks to @Flow
//////////////////////smack///////////////////////////////////////
implementation "org.igniterealtime.smack:smack-android-extensions:4.3.1"
implementation "org.igniterealtime.smack:smack-experimental:4.3.1"
implementation "org.igniterealtime.smack:smack-tcp:4.3.1"
implementation 'de.measite.minidns:minidns-hla:0.2.4'//added this
added minidns dependency
import org.minidns.dnsserverlookup.android21.AndroidUsingLinkProperties;
AndroidUsingLinkProperties.setup(context);//add this
cc=XMPPTCPConnectionConfiguration.builder()
.setCompressionEnabled(true)
.setUsernameAndPassword(username,password)
.setXmppDomain(domain)
.build();
xmpptcpConnection=new XMPPTCPConnection(cc);
xmpptcpConnection.addConnectionListener(this);
xmpptcpConnection.connect();
xmpptcpConnection.login();