Java getBitmap()使主Ui线程变慢
我正在使用Textureview.getBitmap()每秒从相机预览中抓取帧。 它工作得很好,只是它会导致主Ui线程运行缓慢,有时甚至崩溃。 请问我需要做什么??。谢谢 这是我的密码:Java getBitmap()使主Ui线程变慢,java,android,multithreading,android-camera,textureview,Java,Android,Multithreading,Android Camera,Textureview,我正在使用Textureview.getBitmap()每秒从相机预览中抓取帧。 它工作得很好,只是它会导致主Ui线程运行缓慢,有时甚至崩溃。 请问我需要做什么??。谢谢 这是我的密码: mCountDownTimer=new CountDownTimer(7000,500) { @Override public void onTick(long millisUntilFinished) { Log.
mCountDownTimer=new CountDownTimer(7000,500) {
@Override
public void onTick(long millisUntilFinished) {
Log.v("Log_tag", "Tick of Progress"+ i+ millisUntilFinished);
i++;
mProgressBar.setProgress(i);
Bitmap bmps = mTextureView.getBitmap();
ByteArrayOutputStream out = new ByteArrayOutputStream();
bmps.compress(Bitmap.CompressFormat.JPEG , 0, out);
rev.add(bmps);
}
@Override
public void onFinish() {
//Do what you want
i++;
mProgressBar.setProgress(i);
mCountDownTimer.cancel();
}
};
compress方法正在通过tearrayoutputstream将其结果写入out,并且不会更改原始位图。因此,首先,您没有使用compress方法的结果,因为在bmps.compress调用之后没有使用'out'变量 我认为删除这两条线: ByteArrayOutputStream out=新建ByteArrayOutputStream(); bmps.compress(Bitmap.CompressFormat.JPEG,0,out) 将产生与您现在相同的结果 但除此之外,不在UI线程上进行处理(如图像处理)是一种很好的做法,它肯定会减慢应用程序的速度。解决此问题的最简单方法是使用异步任务:
尝试在AsyncTask的doInBackground方法中压缩位图,您的问题就会得到解决。Lemos您可以添加一个示例吗。谢谢