2015-02-25 2 views
1

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

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

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

Я прошел через несколько ответов stackoverflow, но я не понимаю, как правильно подобрать кеш-ответ 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?

+0

Я искал ту же проблему и получил решение кэшировать ответ json от сервера либо записывать в файл, либо сохранять его в SQLite. – user3153551

ответ

0

Сервера управляет, что можно кэшировать в заголовке «Cache» в ответ: «Expires» или «максимальный возраст»

+0

Не могли бы вы привести мне пример? – user3153551

0

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

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