AIDL インターフェイスでリモート サービスを使用している Android IM アプリケーションに asmack を使用しています。
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;
}
}
ガイドしてください。