простая программа smack jabber, занимающая очень много времени для подключения на Android - PullRequest
0 голосов
/ 12 декабря 2018

Используя библиотеку smack jabber 4.3.1 , моей андроидной программе требуется 84 секунды для подключения, что довольно долго.Я видел обсуждение на форуме о подобной проблеме, но это затронуло более ранние версии SMACK.

Что я делаю не так?

Ниже приведен привкусКод использую для подключения.

                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();

1 Ответ

0 голосов
/ 13 декабря 2018

Я нашел проблему.SMACK jabber использует minidns , а minidns имеет недавно исправленную ошибку на Android 8 .Я решил проблему с помощью кода ниже.Благодаря @ 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

добавлена ​​зависимость minidns

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();
...