AsyncTask异步处理

异步处理的目的:完成任务的同时不阻塞主线程(UI线程)

异步任务机制:Handler,AsyncTask

Handler

涉及Handler、Looper、Message、Thread四个对象。

实现异步的流程:主线程启动Thread->子线程运行并生成Message->Looper获取Message并传递给Handler->Handler逐个获取Message并进行UI更新

优点:结构清晰,功能定义明确。对于多个后台任务时简单清晰

缺点:在单个后台异步处理时代码过多,结构过于复杂

AsyncTask

是一个直接继承于Object类的轻量级后台任务类,包为:android.os.AsyncTask。在类中实现异步操作,并提供接口反馈当前异步执行的程度,最后反馈执行的结果给UI主线程。

优点:简单快捷,过程可控

缺点:在使用多个异步操作和并需要进行UI变更时较为复杂

AsyncTask的泛型构造参数

public abstract class AsyncTask<Params,Progress,Result>{}

Params:启动任务执行的输入参数,比如HTTP请求的URL

Progress:后台任务执行的进度百分比

Result:后台任务执行的最终返回结果

重写的方法:

onPreExcute():

doInBackground(Params params)

onProgressUpdate(Progress value)

onPostExcute(Result result)

onCancelled()

注意事项:

1、AsyncTask的实例必须在UI Thread中创建

2、execute方法必须在UI Thread中调用

3、不需要手动调用onPreExcute(),doInBackground(Params params),onProgressUpdate(Progress value),onPostExcute(Result result)这四个方法

4、该task只能被执行一次,否则多次调用时会出现异常

5、不能在doInBackground()中更改UI组件的信息


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gufra_Yin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值