码迷,mamicode.com
首页 > 其他好文 > 详细

AsyncTask机制学习

时间:2015-08-19 19:51:17      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

其内容可以参考http://blog.csdn.net/webgeek/article/details/17298237
1,首先创建一个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, 1);
                toast.setGravity(Gravity.TOP, 0, 100);
                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);
            
        }
            
    }
2,然后在要调用的地方开始执行即可
   例如在获取一帧预览数据后,开始处理,如下:
   @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);
      
    }

 

AsyncTask机制学习

标签:

原文地址:http://www.cnblogs.com/hansjorn/p/4742975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!