日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓多线程——AsyncTask

發布時間:2023/12/31 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓多线程——AsyncTask 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????? 在采集視頻的同時需要對視頻進行實時處理,因此要使用到多線程。

?????? AsyncTask是android提供的一個處理異步任務的框架,相當于Handler+Thread。相比而言,AsyncTask的優點是封裝良好,代碼簡潔。

使用AsyncTask可以使你在后臺執行耗時任務(doInBackground)并將結果反饋給UI線程(onPostExecute),方便UI線程更新界面,而不會阻塞UI線程。

???????? 參考鏈接:http://www.netfoucs.com/article/RowandJJ/69121.html

使用的代碼:

//2. 開啟一個線程進行實施處理幀/*自定義的IndentifyTask類,開啟一個線程分析數據*/private class IndentifyTask extends AsyncTask<Void, Void, Void>{private byte[] mData;//構造函數IndentifyTask(byte[] data){this.mData = data;}@Overrideprotected Void doInBackground(Void... params) {// TODO Auto-generated method stub//Size size = myCamera.getParameters().getPreviewSize(); //獲取預覽大小final int w = myCamera.getParameters().getPreviewSize().width; //寬度final int h = myCamera.getParameters().getPreviewSize().height;final YuvImage image = new YuvImage(mData, ImageFormat.NV21, w, h, null);ByteArrayOutputStream os = new ByteArrayOutputStream(mData.length);if(!image.compressToJpeg(new Rect(0, 0, w, h), 100, os)){return null;}byte[] tmp = os.toByteArray();Bitmap bmp = BitmapFactory.decodeByteArray(tmp, 0,tmp.length); //doSomethingNeeded(bmp); //自己定義的實時分析預覽幀視頻的算法processBmp( bmp );//自己定義的實時分析預覽幀視頻的算法return null;} }

//1.建立一個全局變量 IndentifyTask m_IndentifyTask ;

//3.在處理幀函數里面添加處理邏輯

@Override public void onPreviewFrame(byte[] data, Camera arg1) {if(starttime == 0) {starttime = System.currentTimeMillis();}long time = System.currentTimeMillis()-starttime;long current = time / 1000;Log.d("video", "video recorder =========================remains "+current +" "+(time % 1000));//在處理幀函數里面添加處理邏輯switch(m_IndentifyTask.getStatus()){case RUNNING:return;case PENDING:m_IndentifyTask.cancel(false);break;}m_IndentifyTask= new IndentifyTask(data);m_IndentifyTask.execute((Void)null);}

總結

以上是生活随笔為你收集整理的安卓多线程——AsyncTask的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。