android AsyncTask类的使用
Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。
首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。
privateclassMyTastextendsAsyncTask
{
@Override
protectedObjectdoInBackground(Object...params)
{
returnnull;
}
@Override
protectedvoidonPreExecute()
{
super.onPreExecute();
}
@Override
protectedvoidonPostExecute(Objectresult)
{
super.onPostExecute(result);
}
@Override
protectedvoidonProgressUpdate(Object...values)
{
super.onProgressUpdate(values);
}
@Override
protectedvoidonCancelled()
{
super.onCancelled();
}
}
方法解释:
onPreExecute(),该方法将在执行实际的后台操作前被UIthread调用。可以在该方法中做一些准备工作,如在界面上显示一个进度条。
doInBackground(Params...),将在onPreExecute方法执行后马上执行,该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台计算工作。可以调用publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。
onProgressUpdate(Progress...),在publishProgress方法被调用后,UIthread将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。
onPostExecute(Result),在doInBackground执行完成后,onPostExecute方法将被UIthread调用,后台的计算结果将通过该方法传递到UIthread.
使用AsyncTask类,以下是几条必须遵守的准则:
1)Task的实例必须在UIthread中创建
2)execute方法必须在UIthread中调用
3)不要手动的调用onPreExecute(),onPostExecute(Result),doInBackground(Params...),onProgressUpdate(Progress...)这几个方法
4)该task只能被执行一次,否则多次调用时将会出现异常
文章连接:http://blog.csdn.net/murongshusheng/article/details/7828042
更多相关文章
- Android官方DrawerLayout 抽屉式侧滑菜单-简单使用方法
- Android心得4.3--SQLite数据库--execSQL()和rawQuery()方法
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android 摇一摇太灵敏的解决方法
- Android中线程同步之Mutex与Condtion的用法
- Android加载Html的方法
- android window的requestWindowFeature()的使用方法
- Android N 7.0中报错:android.os.FileUriExposedException的解决