2013-02-27 52 views
1

我正在使用loopj发布一些数据。这一切工作正常,但我有一些问题:Android loopj:发布数据

  • 什么是一个好方法来处理没有互联网连接可用的情况下?目前我只是在一段时间后重试,但是像这样,我必须在本地存储数据,因为如果用户关闭了应用程序或甚至关闭了他的设备,数据将不会被发送。也许这是唯一的方法,或者你知道另一种方式来做到这一点?

  • 当我发布一些数据并且连接不好时,它有时会停下来。 loopj是否有某种超时?你怎么能改变它?你怎么知道它没有提交?

我只需要一个非常稳定的方式发布数据。你推荐使用loopj以外的库吗?

回答

0

你可以在失败时覆盖onFailure(),并处理那里的情况。

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

是的,AsyncHttpClient有超时,默认为10秒。您可以将其更改为setTimeout(int)

1

可靠传输的一种方法的数据:

    在SQLite数据库
  1. 插入请求
  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;