具体的可以参见这篇博客,将原理讲解得很详细:
http://blog.csdn.net/mylzc/article/details/6772129
由于android只能够在主线程中实现UI的更新,因此使用的方法通常是:
1,handler+thread机制
2,异步处理工作类:Async Task。里面五个回调分别对应着五个状态,详情可见上面的博客,这里重点说一下几个参数的含义。
AsyncTask<params,progress,result>;
其中,params是传递给后台的参数类型。result是后台返回的参数类型。
result doInBackground(Params...)。这个方法相当于handler机制中Thread。除了这个方法以外,其他四个方法都是在主UI线程总执行。在这个方法中可以调用publicProgress方法发布一个或者多个进度单位到onPublishProgress中
void onPublishProgress(progress...),实现线程的更新。
void onPostExecute(Result) 后台运行结束之后调用。
(这个类还有另外两种方法,onPreExecute(),该回调函数在任务被执行之后立即由UI线程调用。这个步骤通常用来建立任务,在用户接口(UI)上显示进度条。onCancelled (),在调用AsyncTask的cancel()方法时调用)