IIT-Homer专栏T-Homer专栏成功是优点的发挥,失败是缺点的积累!不为失败找理由,只为成功找成功是优点的发挥,失败是缺点的积累!不为失败找理由,只为成功找方法……方法……AAndroid之多线程工作-AsyncTask与handlerndroid之多线程工作-AsyncTask与handler分类:Android2011-08-2320:402246人阅读评论(0)收藏举报本本文主要讲解下AsyncTask的使用以及Handler的应用文主要讲解下AsyncTask的使用以及Handler的应用首先,我们得明确下一个概念,什么是UI线程。顾名思义,ui线程就是管理着用户界面的那个线程!android的ui线程操作并不是安全的,并且和用户直接进行界面交互的操作都必须在ui线程中进行才可以。这种模式叫做单线程模式。我们在单线程模式下编程一定要注意:不要阻塞ui线程、确保只在ui线程中访问ui组件当我们要执行一个复杂耗时的算法并且最终要将计算结果反映到ui上时,我们会发现,我们根本没办法同时保证上面的两点要求;我们肯定会想到开启一个新的线程,让这个复杂耗时的任务到后台去执行,但是执行完毕了呢?我们发现,我们无法再与ui进行交互了。为了解决这种情况,android为我们提供了很多办法。1)、handler和message机制:通过显示的抛出、捕获消息与ui进行交互;2)、(Runnable):如果当前线程为ui线程,则立即执行;否则,将参数中的线程操作放入到ui线程的事件队列中,等待执行。3)、(Runnable):将操作放入到message队列中,如果放入成功,该操作将会在ui线程中执行,并返回true,否则返回false4)、(Runnable,long)跟第三条基本一样,只不过添加了一个延迟时间。5)、,定义了三种泛型类型Params,Progress,Result。Params启动任务执行的输入参数,比如HTTP请求的URLProgress后台任务执行的百分比。Result后台执行任务最终返回的结果,比如String用程序调用,开发者需要做的就是实现这些方法。1)子类化AsyncTask2)实现AsyncTask中定义的下面一个或几个方法onPreExecute()onPreExecute(),该方法将在执行实际的后台操作前被UIthread调用。可以在该方法中做一些准备工作,如在界面上显示一个进度条。doInBackground(Params…)doInBackground(Params…),将在onPreExecute方法执行后马上执行,该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台计算工作。可以调用publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。onProgressUpdate(Progress…)onProgressUpdate(Progress…),在publishProgress方法被调用后,UIthread将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。
Android之多线程工作-AsyncTask与handler 来自淘豆网m.daumloan.com转载请标明出处.