SmackConfiguration.setDefaultPacketReplyTimeout - 抛出错误

时间:2015-10-16 07:58:21

标签: android xmpp smack

我正在为Android编写一个简单的XMPP客户端,使用以下代码与XMPP服务器建立连接:

import java.io.IOException;

import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.chat.ChatManager;
import org.jivesoftware.smack.chat.Chat;
import org.jivesoftware.smack.chat.ChatMessageListener;
import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;


import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;

import android.util.Log;
import android.view.View;
import android.widget.Toast;
import android.content.Intent;


public class MainActivity extends Activity {
    String msg = "PM1139 : ";

    SmackConfiguration.setDefaultPacketReplyTimeout(10000);
    XMPPTCPConnectionConfiguration config2 = XMPPTCPConnectionConfiguration.builder()
            .setUsernameAndPassword("xxx", "xxxxxx")
            .setServiceName("adastra.re")
            .setHost("adastra.re")
            .setPort(5222)
            .setResource("Android")
            .build();

    AbstractXMPPConnection conn1 = new XMPPTCPConnection(config2);

除了这一行之外,一切正常:

SmackConfiguration.setDefaultPacketReplyTimeout(10000);

会抛出错误

  

此行有多个标记      - 令牌上的语法错误,错放的构造(s)      - 令牌上的语法错误" 10000",删除此令牌

如果我删除这一行,程序工作正常,只是偶尔我得到一个超时。因此我想设置一个很长的超时~10秒。

我看过很多地方都使用过这种结构,甚至在其他地方都使用过它。

我首先想到的是Eclipse(版本3.8,在Ubuntu 14.04上运行)表现得很奇怪,所以我刷新了项目,重新启动了Eclipse,甚至重启了机器,但没有快乐。错误是持久的。

还能做些什么?

1 个答案:

答案 0 :(得分:0)

答案很简单。 需要将代码行转移到MainActivity类中的OnCreate(..)方法。多数民众赞成

@Override
       public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          SmackConfiguration.setDefaultPacketReplyTimeout(10000);
          Log.d(msg, "The onCreate() event");
       }

这解决了问题