2012-08-15 83 views
6

我正在使用asmack作为android IM应用程序,其中我正在使用带有AIDL接口的远程服务。如何在Android服务中处理保持活动连接服务

onStartCommand我的服务方法我写代码如下。我创建连接,然后使用它登录。当我的应用程序主要活动的方法onCreate里面运行我的应用程序的任何人运行我的服务getApplicationContext.StartService(serviceIntent)。它工作正常,但几分钟后(有时10分钟和一些时间超过10)我附加在服务里面的messageListener停止接收消息。但我知道这个连接是存在的,因为我同时使用xmppConnection来发送消息给用户B发送消息,但是它没有收听来自用户B的消息。我不知道为什么我的听众停止了听到消息。

public int onStartCommand(final Intent intent, final int flags, final int startId) { 
    ConnectionConfiguration config = new ConnectionConfiguration(URL, MyPort, Host); 
    xmppConnection = new XMPPConnection(config); 
    xmppConnection.connect(); 
    xmppConnection.login("[email protected]", "testpass"); 
    xmppConnection.addPacketListener(myMessageListener, new PacketTypeFilter(Message.class)); 
    return START_STICKY; 
} 
private PacketListener myMessageListener = new PacketListener() { 
    public void processPacket(Packet packet) { 
     Message msg = (Message) packet; 
    } 
} 

请指导。

+0

请格式化您的代码,并为您的文章选择一个好标题。 – Flow 2012-08-16 06:23:37

+0

问题是我的连接存在,但它停止侦听Packet.using连接我打电话sendPacket工作正常,但不知道为什么它停止监听传入的数据包。我检查我的服务也运行在后端,因为我可以sendPacket从服务发送消息包,请指导。 我面临着与下面的链接一样的问题。 http://stackoverflow.com/questions/5040852/packet-listener-in-android-service – aftab 2012-08-18 00:37:51

+0

您发布的链接似乎被回答----> http://stackoverflow.com/questions/5040852/packet-listener -in-android-service – sascha10000 2012-08-18 01:36:20

回答

4

错误地关闭了您的连接,但您没有注意到? 您应该为每个回调添加连接侦听器和日志以调试连接状态。

在Android上,可能有一个“僵尸”套接字:你仍然可以写信给它,但接收者永远不会收到这些消息,当然你也无法从中读取新的消息。 网络状态更改后可能会发生。

检测到我使用XMPP Ping,从客户端发起的警报(每15分钟不准确地重复)。我禁用白色空间保持活着。 这会破坏客户端和服务器(NAT或代理服务器)之间可能存在的大部分超时机制。 另外,如果您没有收到任何ping响应(例如20秒内),则可以假定连接处于不良状态并手动重新连接。

+0

亲爱的纪尧姆佩罗特:谢谢你的回复。我面临一个奇怪的问题。我正在使用AIDL服务来处理我的保持连接。我发送和接收工作正常的消息。但是使用XMPP对象,我发送订阅邀请请求给它发送请求数据包的用户。但是,这里的问题是它的数据包监听器停止监听传入的数据包。同时,我尝试使用相同的xmpp对象发送数据包,但发送正常但接收停止以收听传入数据包。发送邀请请求后,它看起来是xmpp数据包侦听器干扰。请指导。 。 – aftab 2012-08-21 11:45:54

+0

可以使用AndroidDebugger类(常规Smack上的ConsoleDebugger)打印实际读取或写入套接字的内容,而无需使用PacketListener API。当听众停止工作时,您应该检查您是否在调试器的日志中收到数据包。 – 2012-09-05 12:25:48