拍照时我没有2秒钟冻结(没有预览),分布如下:
Camera cameraBack = Camera.open(CameraInfo.CAMERA_FACING_BACK); // 0.400 sec
...
cameraBack.startPreview(); // 0.800 sec
...
cameraBack.takePicture(null, null, null, new Camera.PictureCallback() {public void onPictureTaken(byte[] data, Camera camera) {...}}); // 0.900 sec
所以我试着在异步线程中运行它:
new Thread(new Runnable() {
public void run() {
...
}).start();
但这并没有改变任何事情。实际上,我后来在文档中看到,这些函数已经在一个独立的线程上执行了。
问题是:这种冻结破坏了我的用户体验,更糟糕的是,有时由于CPU开销而不拍照:
Suspending all threads took: 7.659ms
我该如何解决?