我正在将 asmack 用于 android IM 应用程序,我在其中使用具有 AIDL 接口的远程服务。
在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("someid@sample.com", "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;
}
}
请指导。