如何使用完成处理程序在Android中下载数据?

时间:2015-11-24 19:40:01

标签: android json

我的背景来自iOS。 我使用AFNetworking下载数据。我做完成处理程序让我知道下载完成。完成处理程序返回NSData,我随后将其解析。

我将所有下载内容都保存到一个单独的类中。我只是传递URL,参数并下载并返回数据。

如何在Android中实现此类策略。

我的学习:

我从

读到

http://developer.android.com/training/basics/network-ops/connecting.html#http-client

我发现我在Activity中执行它,如果我在一个单独的类中使用它。它创造了上下文和其他东西的问题。

当我详细阅读整篇文档时,我发现我可以把东西放到其他课程中,但我找不到任何完成处理程序,将数据发送回Activity类。

所以,我班级的主要部分,如何使用COMPLETION HANDLER下载。

感谢。

1 个答案:

答案 0 :(得分:0)

  1. 如果您想尝试改造,here are some good examples to get started with并回答您的问题,他们会对您的数据下载时进行回调:

    User user = new User(123, "John Doe");
    Call<User> call = apiService.createuser(user);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Response<User> response,
          Retrofit retrofit) {
            // THIS is where you get a successful callback when your data is downloaded
        }
    
        @Override
        public void onFailure(Throwable t) {
            // Callback for error cases
        }
    
  2. 如果您更喜欢凌空,here is their documentation以及如何使用回调进行基本网络通话的示例:

    // Instantiate the RequestQueue. 
    RequestQueue queue = Volley.newRequestQueue(this);
    String url ="http://www.google.com";
    
    // Request a string response from the provided URL. 
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
        @Override 
        public void onResponse(String response) {
            // THIS is the successful callback
        } 
    }, new Response.ErrorListener() {
        @Override 
        public void onErrorResponse(VolleyError error) {
            // Error callback
        } 
    }); 
    // Add the request to the RequestQueue. 
    queue.add(stringRequest);