Store in Cache rest service using Volley

0

Hello friends I have a question, I'm using a rest service using the Volley library in android studio. Someone who can advise me to store the results in cache.

Annex My classes:

REST service consumption

  public void LoadOrdenesAsignadasResumen() {
    builder = new AlertDialog.Builder(thiscontext);
    View mView = getActivity().getLayoutInflater().inflate(R.layout.alertdialog_loading, null);
    builder.setView(mView);
    alertDialog = builder.create();
    alertDialog.setCancelable(false);
    alertDialog.show();

    String urlBASE = "https://" + UrlRemote.baseDebug + UrlRemote.EndPointAsignadas2;

    // Metodo de deprecated
    ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("driver_id", driver_id));
    NameValuePair Dato = SecurityUtils.getSignature(urlBASE, params);

    try {
        url2 = new URL(urlBASE + UrlRemote.getQuery(params));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    String Firma = String.valueOf(Dato);

    String URLFINAL = url2 + "&" + Firma;

    Log.e("WEB", URLFINAL);

    jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, URLFINAL, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            alertDialog.dismiss();

            Ordenes ordenes = null;
            JSONArray json = response.optJSONArray("tripsAssings");
            try {
                for (int i = 0; i < json.length(); i++) {
                    ordenes = new Ordenes();
                    JSONObject jsonObject;
                    jsonObject = json.getJSONObject(i);

                    ordenes.setDelivery_Type(jsonObject.getString("Delivery_Type"));
                    ordenes.setStreet_destino(jsonObject.getString("street_destino"));
                    ordenes.setCompany(jsonObject.getString("Company"));
                    ordenes.setStreet_recolect(jsonObject.getString("street_recolect"));
                    ordenes.setLatitud(jsonObject.getString("Latitud"));
                    ordenes.setCreated(jsonObject.getString("Created"));
                    ordenes.setState(jsonObject.getString("state"));
                    ordenes.setAmount(jsonObject.getString("Amount"));
                    ordenes.setName_client(jsonObject.getString("Name_client"));
                    ordenes.setTraking_id(jsonObject.getString("traking_id"));
                    ordenes.setLongitud(jsonObject.getString("Longitud"));
                    ordenes.setCounter(jsonObject.getString("Counter"));
                    ordenes.setCustom_id(jsonObject.getString("custom_id"));
                    ordenes.setTelephono(jsonObject.getString("Telephono"));
                    ordenes.setNotas(jsonObject.getString("Notas"));
                    ordenes.setTrip(jsonObject.getString("IdTrip"));


                    if(ordenes.getDelivery_Type().equals("Programado"))
                    {
                        ordenes.setColorCard("#f8e893");
                    }

                    if(ordenes.getDelivery_Type().equals("99minutos"))
                    {
                        ordenes.setColorCard("#66bb6a");
                    }

                    listaOrdenes.add(ordenes);

                    // ordenesList.add(ordenes);

                    EXTRA_STATE = ordenes.getState();
                }


                adapter = new OrdenesAdapter(listaOrdenes);
                adapter.notifyDataSetChanged();
                recyclerOrdenes.setAdapter(adapter);

                adapter.setOnItemClickListener(new OrdenesAdapter.OnItemClickListener() {
                    @Override
                    public void onItemClick(int position) {

                        Intent i = new Intent(thiscontext, ConfirmarAsignadaActivity.class);
                        Ordenes clickedItem = listaOrdenes.get(position);
                        i.putExtra(EXTRA_DELIVERY_TYPE, clickedItem.getDelivery_Type());
                        i.putExtra(EXTRA_DESTINATION, clickedItem.getStreet_destino());
                        i.putExtra(EXTRA_COMPANY, clickedItem.getCompany());
                        i.putExtra(EXTRA_STREET, clickedItem.getStreet_recolect());
                        i.putExtra(EXTRA_LATITUD, clickedItem.getLatitud());
                        i.putExtra(EXTRA_CREATED, clickedItem.getCreated());
                        i.putExtra(EXTRA_STATE, clickedItem.getState());
                        i.putExtra(EXTRA_AMOUNT, clickedItem.getAmount());
                        i.putExtra(EXTRA_CLIENT, clickedItem.getName_client());
                        i.putExtra(EXTRA_TRACKING_ID, clickedItem.getTraking_id());
                        i.putExtra(EXTRA_LONGITUD, clickedItem.getLongitud());
                        i.putExtra(EXTRA_COUNTER, clickedItem.getCounter());
                        i.putExtra(EXTRA_CUSTOM_ID, clickedItem.getCustom_id());
                        i.putExtra(EXTRA_NOTAS, clickedItem.getNotas());
                        i.putExtra(EXTRA_PHONE, clickedItem.getTelephono());
                        i.putExtra(EXTRA_TRIP, clickedItem.getTrip());

                        startActivity(i);
                    }
                });

                if (listaOrdenes.isEmpty()) {
                    Titletextterror.setVisibility(View.VISIBLE);
                    texterror.setVisibility(View.VISIBLE);
                    btnRefrenshInfo.setVisibility(View.INVISIBLE);
                    Titletextterror.setText(R.string.textTileisEmptyOrdenes);
                    texterror.setText(R.string.textEmptyOrdenes);
                } else {
                    Titletextterror.setVisibility(View.INVISIBLE);
                    texterror.setVisibility(View.INVISIBLE);
                    btnRefrenshInfo.setVisibility(View.INVISIBLE);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            alertDialog.dismiss();

        if (error instanceof NetworkError) {
                Titletextterror.setVisibility(View.VISIBLE);
                texterror.setVisibility(View.VISIBLE);
                btnRefrenshInfo.setVisibility(View.VISIBLE);
                Titletextterror.setText(R.string.textTitleErrorNetwork);
                texterror.setText(R.string.textErrorNetwork);
            } else
          if (error instanceof ClientError) {
                Titletextterror.setVisibility(View.VISIBLE);
                texterror.setVisibility(View.VISIBLE);
                btnRefrenshInfo.setVisibility(View.VISIBLE);
                Titletextterror.setText(R.string.texttitleClientError);
                texterror.setText(R.string.textCLientError);
            } else if (error instanceof ServerError) {
                Titletextterror.setVisibility(View.VISIBLE);
                texterror.setVisibility(View.VISIBLE);
                btnRefrenshInfo.setVisibility(View.VISIBLE);
                Titletextterror.setText(R.string.texttitleClientError);
                texterror.setText(R.string.textServerError);
            } else if (error instanceof TimeoutError) {
                Titletextterror.setVisibility(View.VISIBLE);
                texterror.setVisibility(View.VISIBLE);
                btnRefrenshInfo.setVisibility(View.VISIBLE);
                Titletextterror.setText(R.string.texttitleClientError);
                texterror.setText(R.string.textTimeoutError);
            }
        }
    });

    VolleySingleton.getInstance(thiscontext).addToRequestQueue(jsonObjectRequest);

}

Singleton Volley

public class VolleySingleton {
private static VolleySingleton mInstance;
private RequestQueue mRequestQueue;
private static Context mCtx;

private VolleySingleton(Context context) {
    mCtx = context;
    mRequestQueue = getRequestQueue();
}

public static synchronized VolleySingleton getInstance(Context context) {
    if (mInstance == null) {
        mInstance = new VolleySingleton(context);
    }
    return mInstance;
}

public RequestQueue getRequestQueue() {
    if (mRequestQueue == null) {
        mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
    }
    return mRequestQueue;
}

public <T> void addToRequestQueue(Request<T> req) {
    req.setRetryPolicy(new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    getRequestQueue().add(req);
}

public Map<String, String> getRequestHeader() {
    Map<String, String> headerMap = new HashMap<>();
    return headerMap;
}

public void clearCache() {
    mRequestQueue.getCache().clear();
}

public void removeCache(String key) {
    mRequestQueue.getCache().remove(key);
}

public void cancelPendignRequest (Object tag){
    if(mRequestQueue != null){
        mRequestQueue.cancelAll(tag);
    }
}

}

Thank you friends

    
asked by Alfredo Hernández 23.05.2018 в 00:08
source

0 answers