If you think the Android project Dreamer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
package com.android.fancyblurdemo.app.imageblur;
//fromwww.java2s.comimport android.os.Handler;
import java.util.concurrent.Executor;
/**
* Created by kevin.marlow on 3/26/14.
*/publicclass BlurResponseDelivery {
/** Used for posting responses, typically to the main thread. */privatefinal Executor mResponsePoster;
/**
* Creates a new response delivery interface.
* @param handler {@link android.os.Handler} to post responses on
*/public BlurResponseDelivery(final Handler handler) {
// Make an Executor that just wraps the handler.
mResponsePoster = new Executor() {
@Override
publicvoid execute(Runnable command) {
handler.post(command);
}
};
}
/**
* Creates a new response delivery interface, mockable version
* for testing.
* @param executor For running delivery tasks
*/public BlurResponseDelivery(Executor executor) {
mResponsePoster = executor;
}
publicvoid postResponse(BlurRequest request, BlurResponse response) {
postResponse(request, response, null);
}
publicvoid postResponse(BlurRequest request, BlurResponse response, Runnable runnable) {
request.markDelivered();
request.addMarker("post-response");
mResponsePoster.execute(new ResponseDeliveryRunnable(request, response, runnable));
}
publicvoid postError(BlurRequest request, BlurError error) {
request.addMarker("post-error");
BlurResponse response = BlurResponse.error(error);
mResponsePoster.execute(new ResponseDeliveryRunnable(request, response, null));
}
/**
* A Runnable used for delivering network responses to a listener on the
* main thread.
*/
@SuppressWarnings("rawtypes")
privateclass ResponseDeliveryRunnable implements Runnable {
privatefinal BlurRequest mRequest;
privatefinal BlurResponse mResponse;
privatefinal Runnable mRunnable;
public ResponseDeliveryRunnable(BlurRequest request, BlurResponse response, Runnable runnable) {
mRequest = request;
mResponse = response;
mRunnable = runnable;
}
@SuppressWarnings("unchecked")
@Override
publicvoid run() {
// If this request has canceled, finish it and don't deliver.
if (mRequest.isCanceled()) {
mRequest.finish("canceled-at-delivery");
return;
}
// Deliver a normal response or error, depending.
if (mResponse.isSuccess()) {
mRequest.deliverResponse(mResponse.result);
} else {
mRequest.deliverError(mResponse.error);
}
// If this is an intermediate response, add a marker, otherwise we're done
// and the request can be finished.
if (mResponse.intermediate) {
mRequest.addMarker("intermediate-response");
} else {
mRequest.finish("done");
}
// If we have been provided a post-delivery runnable, run it.
if (mRunnable != null) {
mRunnable.run();
}
}
}
}