Android异步http客户端:向回调添加参数



我想使用异步http客户端将数据发布到服务器,并使设备上的SQLite与这些数据保持同步。所以基本上我希望整个事情:

  1. 将新数据惰性化到SQLite
  2. 使用异步http客户端将新数据发布到服务器
  3. 使用其他数据更新onSuccess/onFailure回调中的SQLite行

我的问题是:如何在AsyncHttpResponseHandler中获得正确的行id?

让我们创建一个简单的示例(没有数据库连接以保持简单,但问题相同)。

private void addPerson(name){
  //using a global client created like this in activity onCreate():
  //AsyncHttpClient client = new AsyncHttpClient();
  //here is a database insert creating a new row, returning the inserted id
  int rowId = <some id returned by the insert>;
  RequestParams param = new RequestParams();
  param.put("name", name);
  client.post("http://www.my.service.url", param, new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(String response) {
      //The response i get contains an additional value, lets say userkey. I want to update the right database row with that information.
      //How to get the right rowId here?
    }
  });
}    

那么,实现这一目标的最佳方式是什么呢?是否重写AsyncHttpResponseHandler以某种方式向回调函数添加参数?

使您的变量成为最终变量,如

final int rowId = <some id returned by the insert>;

这很简单,您可以发送rowId。

param.put("_id",rowId);

并且,服务器将其发送回客户端。

这是个好方法,因为它只允许你做一个AsyncHttpResponseHandler实例。(最好尽可能少地实例化)

相关内容

  • 没有找到相关文章

最新更新