Handler消息处理机制与AsyncTack

Handler

1、Handler消息机制主要分为四个部分:Message \ Handler \ MessageQueue \ Looper,如下图。

Handler流程图

实现过程:
1-Handle通过sendMessage()发送Message到MessageQueue

2-Message存放在MessageQueue中等待处理(注:每个线程中只有一个MessageQueue对象)

3-Looper当MessageQueue有Message时会将其取出并传递到Handler的handleMessage()方法中(注:每个线程只有一个Looper对象)

经过如图流程,从子线程到了主线程。

AsyncTask
AsyncTack通常用于从子线程切换到主线程
AsyncTack是个抽象类,需要用一个子类去继承它,继承时可传入三个参数。
1-Params
    在执行AsyncTask时要传入的参数,可用于后台任务中使用。

2-progress
    后台任务执行时,如果要在界面上显示当前的进度,则使用哲理指定的泛型作为进度单位。

3-result
    但任务执行完成,要对结果进行返回,这里使用指定的泛型作为返回值类型。

如:

class DownloadTask extends AsyncTask<void ,Integer , Boolean>{}

经常要重写四个方法
1-onPreExecute()
    该方法在后台任务开始时执行,用于进行界面上的初始化操作,如显示一个进度对话框

2-doInBackgrounr(params...)
    该方法所有代码都在子线程中运行,用于处理耗时操作,不能进行UI操作,
    一旦任务完成就可以通过return来返回结果
    如果  AsyncTask的第三个参数指定为void,则可以不返回

3-onProgressUpdate(progress...)
    方法中携带的参数是后代任务中传递过来的
    可用于UI操作,利用传来的参数值可用于对界面元素的更新。

4-onpostExecute( result )
    但后台任务执行完成调用此方法。
    返回的数据会作为参数传递到此方法
    可利用返回的数据进行Ui操作,如提醒任务执行结果,关闭进度条对话框等。
   
   



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值