Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- HttpTask menuTask = new HttpTask(this, getApp().getHttp());
- menuTask.connect(new HttpTaskHandler(this) {
- @Override
- protected boolean onSuccess(Activity activity, String response) {
- // do stuff with response
- return false;
- }
- });
- menuTask.execute(getString(R.string.api_url));
- public class HttpTask extends IgnitedAsyncTask<Activity, String, Void, String> {
- private static final String LOG_TAG = "HttpTask";
- private IgnitedHttp http;
- private static int runningTasks = 0;
- private static ProgressDialog loader;
- public HttpTask(Activity context, IgnitedHttp http) {
- this.connect(context);
- this.http = http;
- }
- private synchronized void startTask() {
- runningTasks++;
- }
- private synchronized void endTask() {
- runningTasks--;
- }
- private synchronized void showLoader(Activity context) {
- loader = ProgressDialog.show(context, context.getString(R.string.please_wait), context.getString(R.string.loading_data), true, false);
- }
- private synchronized void hideLoader() {
- loader.dismiss();
- }
- @Override
- public boolean onTaskStarted(Activity context) {
- if(runningTasks == 0) {
- showLoader(context);
- }
- startTask();
- return true;
- }
- @Override
- public boolean onTaskSuccess(Activity context, String response) {
- endTask();
- if(runningTasks == 0) {
- hideLoader();
- }
- disconnect();
- return false;
- }
- @Override
- public String run(String... urls) throws ConnectException, IOException {
- Log.d(LOG_TAG, String.format("Loading: %s", urls[0]));
- IgnitedHttpResponse resp = http.get(urls[0], true).retries(3).expecting(200).send();
- return resp.getResponseBodyAsString();
- }
- @Override
- public boolean onTaskFailed(Activity context, Exception error) {
- endTask();
- if(runningTasks == 0) {
- hideLoader();
- }
- // should show error here
- super.onTaskFailed(context, error); // prints a stack trace
- return true;
- }
- }
- public abstract class HttpTaskHandler implements IgnitedAsyncTaskHandler<Activity, Void, String> {
- private Activity activity;
- public HttpTaskHandler(Activity activity) {
- this.activity = activity;
- }
- protected abstract boolean onSuccess(Activity activity, String response);
- @Override
- public Activity getContext() {
- return activity;
- }
- @Override
- public boolean onTaskCompleted(Activity arg0, String arg1) {
- return false;
- }
- @Override
- public boolean onTaskFailed(Activity arg0, Exception arg1) {
- return false;
- }
- @Override
- public boolean onTaskProgress(Activity arg0, Void... arg1) {
- return false;
- }
- @Override
- public boolean onTaskStarted(Activity activity) {
- return false;
- }
- @Override
- public boolean onTaskSuccess(Activity activity, String response) {
- return onSuccess(activity, response);
- }
- @Override
- public void setContext(Activity activity) {
- this.activity = activity;
- }
- }
Add Comment
Please, Sign In to add comment