Я использую asmack для приложения обмена мгновенными сообщениями для Android, где я использую удаленный сервис с интерфейсом AIDL.
Внутри метода onStartCommand
моей службы я пишу код, как показано ниже. Я создаю соединение, а затем вхожу в систему, используя его. Когда кто-нибудь запускает мое приложение внутри метода onCreate
основного действия моего приложения, запускайте мою службу getApplicationContext.StartService(serviceIntent)
. Он работает нормально, но через несколько минут (иногда 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;
}
}
Пожалуйста, направляйте.