AsysnTask&Handler

来源:互联网 发布:mac录屏如何录制声音 编辑:程序博客网 时间:2024/06/08 02:27
    AsynTask Handler 都是为了不阻塞UI主线线程。

    UI的跟新只能在UI主线程中完成,当遇到耗时操作时,在UI线程中处理会被系统抛出异常,因此,耗时操作不能再UI主线程中完成,那么就要使用到AsynTask或Handler了,他们有什么区别呢?

        AsynTask是Android提供的轻量级异步类,(这里的轻量不代表真的轻量,知识简单快捷,资源消耗大于Handler)。可以直接继承AsynTask类,在类中实现异步操作,并提供接口反馈操作执行的程度。
    new AsynTask<Params,Progress,Result>

e.g:
不难看出它有三个参数,分别是params参数,progress进度,及result返回值,AsynTask 含有四个方法:
    1.onPreExecute();该方法在执行实际后台操作前被UI thread调用,可以在该方法内做一些准备工作。如在界面上显示一个进度条。
    2.doInBackground(Params..);在onExonPreExecute();后马上执行,该方法运行在后台线程中,做耗时操作。与publicProgress(Params..);成对,实现实时进度的更新。
    3.onProgressUpdate(Progress..);在publicProgress();调用后UI thread 将调用这个方法,用于传递更新的数据,如更新UI主线程中的进度条。
   e.g
4.onPostExecute(Result);在doInBackground();方法执行完成之后,UI thread将调用onPostExecute();后台计算结果将通过该方法传递给UI thread。
e.g
 
另外,细心地你可能发现为什么参数是params,progress,resuilt。是的,param 参数和progres参数都是数组传参,你可以传数组,也可以穿多个参数!停止一步操作是xxx。cancal(false);
0 0