Android异步任务库:android-multithread

jopen 10年前

android-multithread 是一个android平台上的 扩展任务库,在AsyncTask基础上进行扩展。

主要特性如下:

1、扩展自AsyncTask,随系统升级

2、增加里任务监听TaskListener,可以有效地将UI和逻辑分开;

3、任务监听TaskListener的所有回调函数内,可以直接进行UI操作。

4、可以设置线程池


用法

1.继承 com.github.snowdream.android.util.concurrent.AsyncTask

//inherit a class from com.github.snowdream.android.util.concurrent.AsyncTask  public class DownloadFilesTask extends AsyncTask {   public DownloadFilesTask(TaskListener listener) {        //explicit inherit the construction from the super class.        super(listener);   }      /**   * TODO    * if error occurs,carry it out.   *    * if (listener != null) {   *    listener.onError(new Throwable());   * }   */  protected Long doInBackground(URL... urls) {       int count = urls.length;       long totalSize = 0;       for (int i = 0; i < count; i++) {           totalSize += 10;           publishProgress((int) ((i / (float) count) * 100));           // Escape early if cancel() is called           if (isCancelled()) break;           try {              Thread.sleep(1000);          } catch (InterruptedException e) {              e.printStackTrace();          }       }       return totalSize;   }  }



2.定义一个 TaskListener.其中的第一个泛型参数是返回结果类型,第二个泛型参数是任务进度的类型。

private TaskListener listener = new TaskListener(){          @Override      public void onStart() {          super.onStart();          Log.i("onStart()");      }          @Override      public void onProgressUpdate(Integer... values) {          super.onProgressUpdate(values);          Log.i("onProgressUpdate(values)" + values[0] );      }          @Override      public void onSuccess(Long result) {          super.onSuccess(result);          Log.i("onSuccess(result)" + result);      }          @Override      public void onCancelled() {          super.onCancelled();          Log.i("onCancelled()");      }          @Override      public void onError(Throwable thr) {          super.onError(thr);          Log.i("onError()");      }          @Override      public void onFinish() {          super.onFinish();          Log.i("onFinish()");      }      };


3.创建一个AsyncTask任务,并且执行。

URL url = null;  try {      url = new URL("http://www.baidu.com/");  } catch (MalformedURLException e) {      // TODO Auto-generated catch block      e.printStackTrace();  }      new DownloadFilesTask(listener).execute(url,url,url);

项目主页:http://www.open-open.com/lib/view/home/1389228911843