Skip to content Skip to sidebar Skip to footer

Update Ui Thread After Network Request In Volley Android Library

I decided to give Volley a try, so presently I have a lot of REST callouts to be done, so I usually create a RequestHandler and a ResponseHandler class which as their names suggest

Solution 1:

I use volley, and this is what I do. The code goes anywhere in your activity.

import com.android.volley.Response.Listener;
importstatic com.android.volley.Response.ErrorListener;

Listener<YOURDATACLASS> successListener = newListener<YOURDATACLASS>() {
    @OverridepublicvoidonResponse(YOURDATACLASS data) {
        // Check to make sure that the activity hasn't been destroyed while the call was in flight.if (! isFinishing()) {
            //DO YOUR UI UPDATE, such as TextView textview = (TextView) findViewById(R.id.yourtextview);
            textview.setText("blah blah blah");
        }
    }
};
ErrorListener() {
        @OverridepublicvoidonErrorResponse(VolleyError error) {
            //DO SOMETHING ON FAILURE
        }

YOURAPICALL(successListener, failurelistener);

Solution 2:

This works for me.

Map<String, String> params = newHashMap<>();
    params.put("dep", DEP);

    CustomPostRequest request = newCustomPostRequest(Request.Method.POST, Uris.URL_GET_DEP_CAT, params,
            newResponse.Listener<JSONObject>() {
                @OverridepublicvoidonResponse(JSONObject jsonObject) {

                    List<PCatValues> valores = parsear_y_devolver_valores(jsonObject);

                    gestionar_entregas(valores);

                    //aqui quitar los dialogos

                }
            }, newResponse.ErrorListener() {
        @OverridepublicvoidonErrorResponse(VolleyError volleyError) {

        }
    });

    ApiController.getInstance().addToRequestQueue(request);

ApiController is my Aplication singleton class.

publicclassApiControllerextendsApplication {

publicstatic final StringTAG = ApiController.class.getSimpleName();

privateRequestQueue mRequestQueue;
privateImageLoader mImageLoader;

privatestaticApiController mInstance;

@OverridepublicvoidonCreate() {
    super.onCreate();
    mInstance = this;
    /*FacebookSdk.sdkInitialize(getApplicationContext());
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.android.facebookloginsample",  // replace with your unique package name
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.e("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }*/

}

publicstatic synchronized ApiControllergetInstance() {
    return mInstance;
}

publicRequestQueuegetRequestQueue() {
    if (mRequestQueue == null) {
        mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    }
    return mRequestQueue;
}

public <T> voidaddToRequestQueue(Request<T> req, String tag) {
    req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
    getRequestQueue().add(req);
}

public <T> voidaddToRequestQueue(Request<T> req) {
    req.setTag(TAG);
    getRequestQueue().add(req);
}

publicvoidcancelPendingRequests(Object tag) {

    if (mRequestQueue != null) {
        mRequestQueue.cancelAll(tag);
    }

}

}

Post a Comment for "Update Ui Thread After Network Request In Volley Android Library"