美文网首页
android多线程学习系列2:AsysncTask:以在子线程

android多线程学习系列2:AsysncTask:以在子线程

作者: ambe_gzy | 来源:发表于2019-03-19 21:27 被阅读0次

    自定义一个AsysncTask:

    class XXX extends AsysncTask<Params,Progress,Result >{

    //方法

    ...

    }

    Params:执行AsysncTask时需要传入的参数(如void)

    Progress:后台任务执行时,若需要在界面上显示当前进度,则在此参数上指定泛型作为进度单位(如Integer),调用函数publishProgress传到onProgressUpdate方法中处理此数据。

    Result:这里指定泛型作为返回值类型(如Boolen)onPostExecute方法接收的数据


    经常需要重写的方法有以下四种

    1.onPreExecute():调用AsysncTask类时执行调用,主要进行一些界面的初始化。

    2.doInBackground(Params):此方法内的所有代码都在子线程中调用。完成后通过return返回结果,返回类型值由上面的Result决定。若进行UI操作,在此调用publishProgress(Progress)方法来完成。

    3.onProgressUpdate(Progress):当调用了publishProgress(Progress)时,此方法会被调用,该方法的参数就是publishProgress(Progress)传入的参数,在这个方法中可以进行UI操作。不执行publishProgress则不会调用此方法。

    4.onPostExecute(Result):任务完成,通过return返回的时候,调用这个方法。可以用此方法获取返回的数据来进行一些UI操作。


    诀窍:doInBackground()执行具体耗时任务,onProgressUpdate()执行UI的更新,onPostExecute()进行任务的收尾。

    启动任务:new XXX.execute();

    相关文章

      网友评论

          本文标题:android多线程学习系列2:AsysncTask:以在子线程

          本文链接:https://www.haomeiwen.com/subject/qgqomqtx.html