当前位置:  软件>java软件

android-multithread

    来源:    发布时间:2015-01-03

    本文导语:  一个android平台上的 扩展任务库,在AsyncTask基础上进行扩展。 用法 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 Downlo...

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

用法

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);

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3