其内容可以参考http://blog.csdn.net/webgeek/article/details/17298237
,首先创建一个AsyncTask类
class GetFaceDetectTask extends AsyncTask<byte[],Integer,Integer> { //第一个参数是传递过来的参数,第二个是返回
//第一个byte[]代表输入到任务的参数类型,也即是doInBackground()的参数类型
//第二个Integer代表处理过程中的参数类型,也就是doInBackground()执行过程中的产出参数类型,通过publishProgress()发消息
//传递给onProgressUpdate()一般用来更新界面
//第三个Integer代表任务结束的产出类型,也就是doInBackground()的返回值类型,和onPostExecute()的参数类型
@Override
protected Integer doInBackground(byte[]... params) {
// TODO Auto-generated method stub int result = facedetector.run();
return result; //在执行过程中可以调用publicProgress(Progress...)来更新任务的进度
} @Override
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled();
} @Override
protected void onPostExecute(Integer result) { //处理完后代用 // TODO Auto-generated method stub
super.onPostExecute(result);
Toast toast = Toast.makeText(CameraActivity.this, "the detect result: "+result, );
toast.setGravity(Gravity.TOP, , );
toast.show();
shutterBtn.setClickable(true);
} @Override
protected void onPreExecute() { //执行前预处理
// TODO Auto-generated method stub
super.onPreExecute();
shutterBtn.setClickable(false);
} @Override
protected void onProgressUpdate(Integer... values) { //处理过程代用,可以用于更新UI
// TODO Auto-generated method stub
super.onProgressUpdate(values); } }
,然后在要调用的地方开始执行即可
例如在获取一帧预览数据后,开始处理,如下:
@Override
public void onPreviewFrame(byte[] data, Camera camera) { int mwidth = mCamera.getParameters().getPreviewSize().width;
int height =mCamera.getParameters().getPreviewSize().height; GetFaceDetectTask task = new GetFaceDetectTask();
task.execute(data); } 3,传递多个不同类型的参数给异步任务(http://codego.net/495279/)
  private static class MyTaskParams {
    int foo;
    long bar;
    double arple;
    MyTaskParams(int foo, long bar, double arple) {
      this.foo = foo;
      this.bar = bar;
      this.arple = arple;
    }
  }
  private class MyTask extends AsyncTask<MyTaskParams, Void, Void> {
     @Override
    protected void doInBackground(MyTaskParams... params) {
      int foo = params[0].foo;
      long bar = params[0].bar;
      double arple = params[0].arple;
      ...
    }
  }
  这样调用它:
  MyTaskParams params = new MyTaskParams(foo, bar, arple);
  MyTask myTask = new MyTask();
  myTask.execute(params);
 

AsyncTask机制学习的更多相关文章

  1. JUC.Lock(锁机制)学习笔记[附详细源码解析]

    锁机制学习笔记 目录: CAS的意义 锁的一些基本原理 ReentrantLock的相关代码结构 两个重要的状态 I.AQS的state(int类型,32位) II.Node的waitStatus 获 ...

  2. JAVA反射机制—学习总结

    最近收到很多关于Java反射机制的问题留言,其实Java反射机制技术方面没有太多难点,或许是大家在学习过程中遗漏了细小知识点,导致一些问题无法彻底理解,现在我们简单的总结一下,加深印象.什么是反射机制 ...

  3. 黑马程序猿_Java 代理机制学习总结

    -------<a href="http://www.itheima.com/"">android培训</a>.<a href=" ...

  4. JAVA的反射机制学习笔记(二)

    上次写JAVA的反射机制学习笔记(一)的时候,还是7月22号,这些天就瞎忙活了.自己的步伐全然被打乱了~不能继续被动下去.得又一次找到自己的节奏. 4.获取类的Constructor 通过反射机制得到 ...

  5. zookeeper 内部机制学习

    zookeeper 内部机制学习 1. zk的设计目标 最终一致性:client不论连接到那个Server,展示给它的都是同一个视图. 可靠性:具有简单.健壮.良好的性能.如果消息m被到一台服务器接收 ...

  6. 浏览器中js执行机制学习笔记

    浏览器中js执行机制学习笔记 RiverSouthMan关注 0.0772019.05.15 20:56:37字数 872阅读 291 同步任务 当一个脚本第一次执行的时候,js引擎会解析这段代码,并 ...

  7. AsyncTask官方学习

    异步任务学习 这两天使用到特别多的AsyncTask类,一块来学习一下吧 AsyncTask允许更方便和简单使用UI线程,这个类允许你在UI线程中进行后台操作和展示结果,而无需操作Thread或者ha ...

  8. JPA,EclipseLink 缓存机制学习(一) 树节点搜索问题引发的思考

    最近在项目在使用JPA+EclipseLink 的方式进行开发,其中EclipseLink使用版本为2.5.1.遇到一些缓存方面使用不当造成的问题,从本篇开始逐步学习EclipseLink的缓存机制. ...

  9. .NET GC机制学习笔记

    学习笔记内容来自网络资料摘录http://www.cnblogs.com/springyangwc/archive/2011/06/13/2080149.html 1.GC介绍 Garbage Col ...

随机推荐

  1. centos7.2 kvm虚拟化管理平台WebVirtMgr部署

    在服务器上部署kvm虚拟化,虚出多台VM出来,以应对新的测试需求.当KVM宿主机越来越多,需要对宿主机的状态进行调控,决定采用WebVirtMgr作为kvm虚拟化的web管理工具,图形化的WEB,让人 ...

  2. pcap学习

    #include <pcap.h> char errbuf[PCAP_ERRBUF_SIZE]; pcap_t *pcap_open_live(const char *device, in ...

  3. U盘制作linux centos6.5

    2015年8月4日 1.下载ULTIso软件,注册 2.DVD1的那个拖进去 3.[一定要双击那个进去]才“写入硬盘镜像”,否则只“写入‘,还是一个iso文件,不是提取出来的文件. 4.覆盖相应的文件 ...

  4. Android Exception 16(Error in ADT 23 Update)

    http://stackoverflow.com/questions/24445367/error-in-adt-23-update http://stackoverflow.com/question ...

  5. mysql cmd连接 乱码

    cmd 默认编码方式是gbk,而我的mysql 设置的编码方式是utf-8的:因此在cmd 中执行 mysql> set names gbk;再查询,发现cmd 中乱码问题得到了解决.

  6. Navicat Premium常用快捷键

    在使用操作数据库时,推荐navicat工具.记住一些常用快捷键,可大大提高工作效率,以下是简单总结的几个常用快捷键. 1.ctrl+r 运行当前查询窗口的所有sql语句 2.ctrl+shift+r ...

  7. Eclipse3.4以上使用dropins的插件安装方式

    Eclipse3.4以上版本支持使用dropins的插件安装方式,使用方便,共有四种使用方法: 1. 最简单的,直接将jar包放到dropins目录下eclipse/    dropins/ 2. 传 ...

  8. 【MyBatis学习11】MyBatis中的延迟加载

    1. 什么是延迟加载 举个例子:如果查询订单并且关联查询用户信息.如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息.把对用户信息的按需去查询就是延迟加载. 所以延迟加载即先从单表 ...

  9. Python绘制分段函数

    1.绘制分段函数:y=4sin(4πt)-sgn(t-0.3)-sgn(0.72-t) import numpy as npimport matplotlib.pyplot as plt#绘制分段函数 ...

  10. Jquery判断其中任意一个文本框的值是否被修改

    <!doctype html><html lang="en"> <head>  <meta charset="UTF-8&quo ...