как работать с постоянным соединением в службе Android

Я использую 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("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;
    }
}

Пожалуйста, направляйте.

6
задан stakx supports GoFundMonica 16 August 2012 в 11:18
поделиться