AsyncTask

AsyncTask是android平台的,对Java se库中Thread的一个封装,融入了android平台特性。

AsyncTask shold ideally be used for shor operations(a few seconds at the most).如果需要更长时间的任务,可使用Executor,ThreadPoolExcutor or FutureTask.

主要用在这种场景:较大的计算工作在后台执行(比如下载图片、解图片),然后将结果更新在UI线程。

3 Types:

private class MyTask extends AsyncTask<Void, Void, Void> { ... }
1. Params, the parameters sent to the task upon execution.

2.Progress,

3.Result,


4 Steps

1.onPreExecute()

2.doInbackground(Params...), pubulishProgress(Progress...)

3.onProgressUpdate(Progress...)

4.onPostExcute(Result)


Rules

1.the AsyncTask class must be loaded on the UI thread.

2.The Task instance must be created on the UI thread.

3.execute(Params...)must be invoked on the UI thread

4.execute(Parames ...) just can be invoked once.


e.g.

 private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         long totalSize = 0;
         for (int i = 0; i < count; i++) {
             totalSize += Downloader.downloadFile(urls[i]);
             publishProgress((int) ((i / (float) count) * 100));
             // Escape early if cancel() is called
             if (isCancelled()) break;
         }
         return totalSize;
     }

     protected void onProgressUpdate(Integer... progress) {
         setProgressPercent(progress[0]);
     }

     protected void onPostExecute(Long result) {
         showDialog("Downloaded " + result + " bytes");
     }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值