Android でのチャット用の APE プロトコルの実装を書いています。あるケースでは、リクエストを送信する必要があります。これは、別のリクエストを送信するまでサーバーに保持されます (その後、サーバーは最初のリクエストに応答を返します)。
Robospice を使用してこの操作を適切に行うにはどうすればよいですか? 2 つのスレッドを使用するようにライブラリをセットアップしましたが、正常に動作しません。最初のいくつかのリクエストはうまく機能しますが、しばらくすると Robospice が言うようになりますrequest added to queue
が、リクエストは送信されません。
ログを添付します。
04-25 16:39:46.094 /com.xx.xx D/CHAT﹕ CHECK
04-25 16:39:46.184 /com.xx.xx D/CHAT﹕ SENDING: [{"sessid":"18c61b18e5a8ce1513e80b8b50c3d865","cmd":"CHECK","chl":3}]
04-25 16:39:56.094 /com.xx.xx D/CHAT﹕ CHECK
04-25 16:39:56.214 /com.xx.xx D/CHAT﹕ SENDING: [{"sessid":"18c61b18e5a8ce1513e80b8b50c3d865","cmd":"CHECK","chl":4}]
04-25 16:39:57.004 /com.xx.xx D/CHAT﹕ RECIVED: [{"data":{"code":null,"from":null,"msg":null,"pipe":null,"sessid":null,"user":null,"users":null,"value":"null"},"raw":"CLOSE","time":"1398436529"}]
// For now it works ok - I send first request, then after 10 secs I send another and get response to first
04-25 16:40:06.095 /com.xx.xx D/CHAT﹕ CHECK
04-25 16:40:06.305 /com.xx.xx D/CHAT﹕ SENDING: [{"sessid":"18c61b18e5a8ce1513e80b8b50c3d865","cmd":"CHECK","chl":5}]
04-25 16:40:07.036 /com.xx.xx D/CHAT﹕ RECIVED: [{"data":{"code":null,"from":null,"msg":null,"pipe":null,"sessid":null,"user":null,"users":null,"value":"null"},"raw":"CLOSE","time":"1398436539"}]
// Up I get response for second request
//From now I see that functions for starting request is launched, but no request is made
04-25 16:40:16.105 /com.xx.xx D/CHAT﹕ CHECK
04-25 16:40:26.124 /com.xx.xx D/CHAT﹕ CHECK
04-25 16:40:36.134 /com.xx.xx D/CHAT﹕ CHECK
このコードを使用して最初のリクエストを行い、ループを開始して 10 秒ごとに次のリクエストを行います。
check(); //does request
periodicCheck.postDelayed(periodicCheckRequest, 10000); //starts a loop
private Handler periodicCheck;
private Runnable periodicCheckRequest = new Runnable() {
@Override
public void run() {
check(); //does request
periodicCheck.postDelayed(this, 10000);
}
};
期待どおりに動作しない理由はありますか?