Chat.sendMessage上的Android Smack瓶颈

时间:2015-07-30 19:15:55

标签: android multithreading xmpp smack

通过android smack库发送邮件时,我遇到了一些性能问题。如果我连续发送几条消息而没有等待,我的ui会暂时停留,直到发送所有消息,即使我是在后台线程上发送它们。

我发送消息的相关代码如下所示.-

XMPPHelper.java

public void sendMessage(final MessageDto message, final UserDto user) {
    new Thread(new Runnable() {
        public void run() {
            Chat chat = getChat(userJid);
            try {
                chat.sendMessage(message);

            } catch (NotConnectedException e) {
                e.printStackTrace();
            }
        }           
    }).start();
}

瓶颈在线

chat.sendMessage(message.getMessage());

任何人都面临类似的性能问题,或者可以指出正确的方向来提升消息发送性能?

修改

以下是我如何调用运行该线程的方法.-

MyActivity.java

...
textMessage.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        sendMessage(textMessage);
        return true;
    }
});

private void sendMessage(EditText textMessage) {
    // ... 
    // Some code to add the message to a ListView
    // ...

    XMPPHelper.getInstance().sendMessage(message, user);
    textMessage.getText().clear();
}

作为旁注,网络连接看起来非常快,在不到一秒的时间内发送一条消息。我猜Smack内部保留了某种消息队列,它有意义吗?

0 个答案:

没有答案