我正在为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,甚至重启了机器,但没有快乐。错误是持久的。
还能做些什么?
答案 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");
}
这解决了问题