android学习笔记1: AsyncTask使用

AsyncTask用于异步更新界面,比Thread+handler的方式更方便,代码更简洁.

AsyncTask的三个主要方法 doInBackground(),onProgressUpdate(),onPostExecute(),

doInBackground()是abstract的,用于处理后台任务,必须实现,

onProgressUpdate()和onPostExecute()是protected的,负责将doInBackground的结果更新到前台,可以选择实现.


在主线程中new一个AsyncTask,调用execute()方法后主线程继续前进,AsyncTask在后台调用doInBackground(),并将结果通知给onPostExecute(),

onProgressUpdate()方法需要在doInbackground方法中主动调用publishProgress()来触发.


实现AsyncTask的必须注意三个主要方法的参数,保证一致,否则导致对应方法不执行.

public abstract class AsyncTask<Params, Progress, Result>

第一个是doInbackground()的,在调用execute()方法时赋值,

第二个是onProgressUpdate()的,在调用publishProgress时赋值,

第三个是onPostExecute()的,task自动调用并赋值.

例:

private class ScanTask extends AsyncTask<String, String, List<String>>{

        @Override
        protected List<String> doInBackground(String... params) {

               ...

               publishProgress(str);

               ...

        }

        @Override
        protected void onProgressUpdate(String... values) {
            ...
        }

        @Override
        protected void onPostExecute(List<String> strings) {

            ...
        }

}


需要注意的是,同一主线程里new的同一AsyncTask都是串行执行的,执行完一个再执行下一个,这样应该是为了不在更新Ui时发生混乱.




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值