android AsyncTask 轻量级异步处理

来源:互联网 发布:梯形九九乘法表 java 编辑:程序博客网 时间:2024/06/05 12:50

AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.


AsyncTask定义了三种泛型类型 Params,Progress和Result。

  • Params 启动任务执行的输入参数,比如HTTP请求的URL。
  • Progress 后台任务执行的百分比。
  • Result 后台执行任务最终返回的结果,比如String。

使用AsyncTask类,以下是几条必须遵守的准则:

  • Task的实例必须在UI thread中创建;
  • execute方法必须在UI thread中调用;
  • 不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;
  • 该task只能被执行一次,否则多次调用时将会出现异常;

 /**         * 第一个参数 传入的数据,可以是String ,Integer 等         * 第二个参数 进行进程监控 ,可以监控进程执行的百分比         * 第三个参数是线程执行完后返回的类型,可以是result也可以是Stirng等         */        new AsyncTask<String, Float, Result>(){                /**         * 这个方法在线程中          * 传入参数是执行execute()方法中传入的对象         * 返回执行的结果也就是第三个参数         */@Overrideprotected Result doInBackground(String... params) {// TODO Auto-generated method stub//publishProgress(values);return null;}/** * 在线程开启之前的回调这个函数 */@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();}/** * 当线程执行结束后回调这个函数 * 可以进行解析、更新ui等一些操作 */@Overrideprotected void onPostExecute(Result result) {// TODO Auto-generated method stubsuper.onPostExecute(result);}/** * 开启线程控制,也可以对外发布执行的进度。 * 在doInBackground方法中使用publishProgress(values)回调这个函数; */@Overrideprotected void onProgressUpdate(Float... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}/** * 用户取消的时候回调这个方法 */@Overrideprotected void onCancelled(Result result) {// TODO Auto-generated method stubsuper.onCancelled(result);}@Overrideprotected void onCancelled() {// TODO Auto-generated method stubsuper.onCancelled();}                }.execute(params);

可以继承来调用AsyncTask


参考:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html

0 0
原创粉丝点击