2015-10-16 51 views
0

我爲Android編寫一個簡單的XMPP客戶端使用了下面的代碼,以建立與XMPP服務器的連接:SmackConfiguration.setDefaultPacketReplyTimeout - 拋出錯誤

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(在Ubuntu 14.04上運行的版本爲3.8),因此我刷新了項目,重新啓動了Eclipse,甚至重新啓動了機器,但沒有喜悅。錯誤是持久的。

還能做什麼?

回答

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"); 
     } 

這解決了問題