【问题标题】:How organize data from server on Android client如何在 Android 客户端上组织来自服务器的数据
【发布时间】:2015-12-15 19:12:23
【问题描述】:

我开发 Android 客户端,从服务器获取订单列表。对于 http 请求,我使用 Retrofit 库,并将 api 服务包装在 ApiClient 类中

public class ApiClient {
    private ApiService apiService;

    public ApiClient() {
        Gson gson = new GsonBuilder()
                .setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
                .create();
        RestAdapter restAdapter = new RestAdapter.Builder()
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setEndpoint(BuildConfig.API_SERVER)
                .setConverter(new GsonConverter(gson))
                .build();
        apiService = restAdapter.create(ApiService.class);

    }
    public ApiService getApiService() {
        return apiService;
    }
}

现在在MainActivity我调用ApiService接口的gerOrders来获取订单列表。

ApiService service = new ApiClient().getApiService();
service.getOrders(callback);

Callback callback = new Callback() {
    @Override
    public void success(Object o, Response response) {
        Log.d("TestObject", new Gson().toJson(o));
    }
    @Override
    public void failure(RetrofitError retrofitError) {
    }
};

但是这个订单列表可能会在其他活动中使用,我认为,在活动或片段中获取数据并不好。我怎样才能很好地组织这段代码?

【问题讨论】:

  • 您的应用打算多久从服务器获取数据?
  • 每分钟一次,或者,可能是几秒钟。但是,当数据每小时或每天提取一次时,我也很感兴趣。
  • 那么如果你需要频繁的数据,你可以在其他活动中调用getOrders()方法来获取订单数据。你的具体问题是什么?
  • 这里不能使用contentProvider,因为它用于在设备中的应用程序之间共享数据。如果响应需要很长时间,您可以使用服务,我在这里看不到这种情况。所以你需要调用网络调用方法是AsyncTask,这将解决你的问题。
  • 对不起,我忽略了你代码的实现。不需要AsyncTask 这个实现已经是异步的了。您使用的是正确的方式。

标签: android


【解决方案1】:

您可以将此任务委托给一些助手,例如 DataHelper(您会找到更好的名称:)),通过这种方式,活动、片段、控制器可以轻松访问它

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2019-10-13
    • 2012-01-22
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多