1

loopj を使用してデータを投稿しています。すべて正常に動作しますが、いくつか問題があります。

  • インターネット接続が利用できない場合の適切な処理方法は何ですか? 現時点では、しばらくしてから再試行するだけですが、このように、ユーザーがアプリを閉じたり、デバイスをシャットダウンしたりしても、データが送信されないため、データをローカルに保存する必要があります。多分それが唯一の方法ですか、それとも別の方法を知っていますか?

  • いくつかのデータを投稿して接続が悪いと、時々停止します。loopj には何らかのタイムアウトがありますか? どうすればそれを変更できますか?そして、それが提出されていないことをどのように知ることができますか?

データを投稿するための非常に安定した方法が必要です。loopj 以外のライブラリを使用することをお勧めしますか?

4

2 に答える 2

1

データを確実に転送する方法:

  1. SQLite データベースにリクエストを挿入
  2. POSTリクエストを行う
  3. 適切な行を削除 onSuccess()
  4. インターネットが復旧したら、SQLite で保留中の行を再試行します (android.net.conn.CONNECTIVITY_CHANGE)

AsyncHttpClient クラスから:

private static final int DEFAULT_MAX_CONNECTIONS = 10;
private static final int DEFAULT_SOCKET_TIMEOUT = 10 * 1000;
private static final int DEFAULT_MAX_RETRIES = 5;
private static final int DEFAULT_SOCKET_BUFFER_SIZE = 8192;
于 2013-07-10T20:57:25.777 に答える
0

失敗したときに onFailure() をオーバーライドし、そこで状況に対処できます。

@Override
public void onFailure(Throwable e) {
    Log.d(TAG, e.toString());
}

はい、AsyncHttpClient にはタイムアウトがあり、デフォルトでは 10 秒です。setTimeout(int)で変更できます。

于 2013-03-21T10:11:55.840 に答える