Android Open Source - RZAndroidBaseUtils R Z Async Task






From Project

Back to project page RZAndroidBaseUtils.

License

The source code is released under:

MIT License

If you think the Android project RZAndroidBaseUtils 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.raizlabs.tasks;
/*from   ww  w .  ja  va2 s  . co  m*/
import android.annotation.SuppressLint;
import android.os.AsyncTask;

/**
 * Base class for RZAsyncTasks which provides features such as RZAsyncTaskEvents.
 * Subclasses should override doPreExecute(), doProgressUpdate, and doPostExecute() instead of
 * onPreExecute(), onProgressUpdate, and onPostExecute(). These "do" functions will be called
 * inside the "on" functions.
 * @author Dylan James
 *
 * @param <Params>
 * @param <Progress>
 * @param <Result>
 */
public abstract class RZAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
  /**
   * RZAsyncTaskEvents
   */
  public RZAsyncTaskEvent<Progress, Result> AsyncTaskEvent = new RZAsyncTaskEvent<Progress, Result>();
  /**
   * Adds a given RZAsyncTaskListener to be notified of AsyncTaskEvents
   * @param listener
   */
  public void addRZAsyncTaskListener(RZAsyncTaskListener<Progress, Result> listener) {
    AsyncTaskEvent.addListener(listener);
  }
  /**
   * Removes a given RZAsyncTaskListener so it will no longer receive these events.
   * @param listener
   * @return True if the listener was removed, false if it wasn't found.
   */
  public boolean removeRZAsyncTaksListner(RZAsyncTaskListener<Progress, Result> listener) {
    return AsyncTaskEvent.removeListener(listener);
  }
  
  protected void onCancelled(Result result) {
    AsyncTaskEvent.raiseCancelled(result);
  }
  
  /**
   * Gets whether this task should be executed on the
   * {@link AsyncTask#THREAD_POOL_EXECUTOR} when
   * {@link #executeInParallel()} is called.
   * <br><br>
   * By default, this will return true if the version is >= Honeycomb.
   * @return True to execute on the {@link AsyncTask#THREAD_POOL_EXECUTOR},
   * otherwise false.
   */
  protected boolean executeInParallelOnThreadPoolExecutor() {
    return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB;
  }
  
  /**
   * Executes this {@link RZAsyncTask} in parallel.
   * <br><br>
   * Uses {@link #executeOnExecutor(java.util.concurrent.Executor, Object...)}
   * if {@link #executeInParallelOnThreadPoolExecutor()} returns true, else it will
   * execute using {@link #execute(Object...)}.
   * @return This {@link RZAsyncTask}.
   */
  public RZAsyncTask<Params, Progress, Result> executeInParallel() {
    return executeInParallel((Params[])null);
  }
  
  /**
   * Executes this {@link RZAsyncTask} in parallel.
   * <br><br>
   * Uses {@link #executeOnExecutor(java.util.concurrent.Executor, Object...)}
   * if {@link #executeInParallelOnThreadPoolExecutor()} returns true, else it will
   * execute using {@link #execute(Object...)}.
   * @param values The values to be passed to the task.
   * @return This {@link RZAsyncTask}.
   */
  @SuppressLint("NewApi")
  public RZAsyncTask<Params, Progress, Result> executeInParallel(Params...values) {
    if (executeInParallelOnThreadPoolExecutor()) {
      executeOnExecutor(THREAD_POOL_EXECUTOR, values);
      return this;
    } else {
      execute(values);
      return this;
    }
  }
  
  @Override
  protected final void onPreExecute() {
    super.onPreExecute();
    AsyncTaskEvent.raisePreExecute(doPreExecute());
  }
  
  /**
   * Called on the UI thread to do pre-execution logic.
   * @return True if the task will be instant. Return true ONLY IF the task
   * will run fast enough that we won't need to display a dialog or anything to the
   * user. If unknown, return false by default.
   */
  protected boolean doPreExecute() { return false; }

  protected final void onProgressUpdate(Progress... values) {
    super.onProgressUpdate(values);
    doProgressUpdate(values);
    AsyncTaskEvent.publishProgress(values);
  }
  
  protected void doProgressUpdate(Progress... values) { }
  
  protected final void onPostExecute(Result result) {
    super.onPostExecute(result);
    doPostExecute(result);
    AsyncTaskEvent.raisePostExecute(result);
  }
  
  protected void doPostExecute(Result result) { }
}




Java Source Code List

com.raizlabs.baseutils.CompatibilityUtils.java
com.raizlabs.baseutils.IOUtils.java
com.raizlabs.baseutils.Logger.java
com.raizlabs.baseutils.Math.java
com.raizlabs.baseutils.StringUtils.java
com.raizlabs.baseutils.ThreadingUtils.java
com.raizlabs.baseutils.Wrapper.java
com.raizlabs.baseutils.examples.MainActivity.java
com.raizlabs.baseutils.examples.asyncdrawable.AsyncDrawableExampleActivity.java
com.raizlabs.baseutils.examples.asyncdrawable.AsyncDrawableListExampleActivity.java
com.raizlabs.baseutils.examples.simplegenericadapter.SimpleGenericAdapterExampleActivity.java
com.raizlabs.baseutils.examples.viewgroupadapter.ViewGroupAdapterExampleActivity.java
com.raizlabs.baseutils.examples.viewholderstrategy.SimpleViewHolderStrategyExampleActivity.java
com.raizlabs.collections.ListUtils.java
com.raizlabs.collections.MappableSet.java
com.raizlabs.collections.TransactionalHashSet.java
com.raizlabs.concurrent.BasePrioritizedRunnable.java
com.raizlabs.concurrent.ConcurrencyUtils.java
com.raizlabs.concurrent.PrioritizedRunnable.java
com.raizlabs.concurrent.Prioritized.java
com.raizlabs.content.sharing.SharingUtils.java
com.raizlabs.database.CursorIterable.java
com.raizlabs.database.CursorIterator.java
com.raizlabs.events.EventListener.java
com.raizlabs.events.Event.java
com.raizlabs.events.ProgressListener.java
com.raizlabs.events.SimpleEventListener.java
com.raizlabs.functions.Delegate.java
com.raizlabs.functions.Predicate.java
com.raizlabs.functions.Provider.java
com.raizlabs.graphics.ImageFactory.java
com.raizlabs.graphics.drawable.async.AsyncDrawableTask.java
com.raizlabs.graphics.drawable.async.AsyncDrawableUtils.java
com.raizlabs.graphics.drawable.async.AsyncDrawableWrapper.java
com.raizlabs.graphics.drawable.async.AsyncDrawable.java
com.raizlabs.graphics.drawable.async.BaseAsyncDrawableTask.java
com.raizlabs.imagecaching.ImageCache.java
com.raizlabs.imagecaching.PrefixedImageCacheAdapter.java
com.raizlabs.imagecaching.StubImageCache.java
com.raizlabs.json.JSONArrayParserDelegate.java
com.raizlabs.json.JSONHelper.java
com.raizlabs.synchronization.OneShotLock.java
com.raizlabs.tasks.RZAsyncTaskEvent.java
com.raizlabs.tasks.RZAsyncTaskListener.java
com.raizlabs.tasks.RZAsyncTask.java
com.raizlabs.util.observable.ObservableData.java
com.raizlabs.util.observable.ObservableListAdapter.java
com.raizlabs.util.observable.ObservableList.java
com.raizlabs.view.ViewCompatibility.java
com.raizlabs.view.animation.AnimationListenerWrapper.java
com.raizlabs.view.animation.RelativeLayoutParamsAnimation.java
com.raizlabs.view.animation.ResizeAnimation.java
com.raizlabs.widget.EvenLinearLayout.java
com.raizlabs.widget.ImageMixView.java
com.raizlabs.widget.SlideRevealLayout.java
com.raizlabs.widget.ViewUtils.java
com.raizlabs.widget.adapters.ListBasedAdapter.java
com.raizlabs.widget.adapters.SimpleGenericAdapter.java
com.raizlabs.widget.adapters.ViewGroupAdapter.java
com.raizlabs.widget.adapters.ViewHolderStrategyAdapter.java
com.raizlabs.widget.utils.SimpleViewHolderStrategy.java
com.raizlabs.widget.utils.ViewHolderStrategyConverter.java
com.raizlabs.widget.utils.ViewHolderStrategyUtils.java
com.raizlabs.widget.utils.ViewHolderStrategy.java