Android Json Кэширование ответов

Я использую volley framework для получения ответов json с сервера и обновления элементов View, я использую Volley, поскольку он обрабатывает кэширование.

Всякий раз, когда загружается действие, volley всегда получает ответ от сервера и не загружает никаких данных из кэшированного ответа, поэтому я не могу использовать этот кэшированный ответ для загрузки контента в автономном режиме.

Я загружаю все свои изображения с сервера, каждый раз, когда залп выбирается с сервера, вызывает задержку ответа и не загружает изображения в автономном режиме.

Я просмотрел несколько ответов от stackru, но до сих пор не ясно, как найти правильный способ кеширования ответа json и использовать его, чтобы приложение работало в автономном режиме. Когда устройство подключено к Интернету, оно должно синхронизироваться с последним контентом с сервера.

                RequestQueue queue = MySingleton.getInstance(this.getApplicationContext()).getRequestQueue();
                queue.start();
                JsonArrayRequest Req = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());
                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {    
                                JSONObject obj = response.getJSONObject(i);
                                MainPojo test = new MainPojo();
                                String name = obj.getString("facility_name");
                                MainPojo.oName.add(name);
                                test.setName(name);                                 
                                String imgUri = obj.getString("easyurl");                                   
                                System.out.println(imgUri);                                 
                                Integer in = getDrawable(imgUri);
                                Integer ap = R.drawable.appointments;                                   
                                System.out.println(ap);                                 
                                System.out.println(in);              

                                // adding movie to movies array
                                testList.add(test);

                                    } catch (JSONException e) {
                                e.printStackTrace();
                                    }    
                                }    
                        // notifying list adapter about data changes                          
                        mAdapter.notifyDataSetChanged();
                            }
                        }, new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());                    

                            }
                        })
                    {            
                    //**
                    // Passing some request headers
                    //*
                    @Override
                    public Map<String, String> getHeaders() throws AuthFailureError {
                        HashMap<String, String> headers = new HashMap<String, String>();
                        headers.put("Cookie", MainActivity.sharedpreferences.getString(savedCookie, ""));                
                        headers.put("Set-Cookie", MainActivity.sharedpreferences.getString(savedCookie, ""));                                   
                        return headers;
                    } 
                };   
                // Add the request to the RequestQueue.      
                MySingleton.getInstance(this).addToRequestQueue(Req);

Что мне здесь не хватает, чтобы кэшировать ответ json?

2 ответа

Недавно я разработал проект, который используется для этого сценария. http://mbag102.github.io/spice.

По сути, он использует GSON и Volley для выполнения запросов к серверу и кэширует результаты в БД SQLite (используя слегка модифицированную версию Sugar ORM). Я использую его в различных своих приложениях, и он оказался достаточно быстрым и эффективным.

Сервер управляет тем, что может быть кэшировано в заголовках "Cache" в ответе: "Expires" или "max-age"

Другие вопросы по тегам