在Android中可以通过Thread+Handler实现多线程通信,一种经典的使用场景是:在新线程中进行耗时操作,当任务完成后通过Handler向主线程发送Message,这样主线程的Handler
在收到该Message之后就可以进行更新UI的操作。上述场景中需要分别在Thread和Handler中编写代码逻辑,为了使得代码更加统一,我们可以使用AsyncTask类。
AsyncTask是android提供的一个助手类,它对Thread和Handler进行了封装,方便我们使用。Android之所以提供AsyncTask这个类,就是为了方便我们在后台线程中执行操作,然后将结果发送给主线程,
从而在主线程中进行UI更新等操作。在使用AsyncTask时,我们无需关注Thread和Handler,AsyncTask内部会对其进行管理,这样我们就只需要关注于我们的业务逻辑即可。
AsyncTask有四个重要的回调方法,优先级分别是:onPreExecute、doInBackground, onProgressUpdate 和 onPostExecute。这四个方法会在AsyncTask的不同时期进行自动调用,我们只需要实现这几个方法的内部逻辑即可。
AsyncTask:先用execute()开启任务,当此方法执行后立即会执行onPreExecute,此方法对任务逻辑开始前对主线程的UI进行一些操作,多半是显示ProgressBar之类,然后doInBackground执行费时具体线程的操作,
当任务执行完毕,onPostExecute()会在线程处理后绘制主线程的UI,比如progressbar的消失
ps : 一般优先
例如: