Android相机开启延迟活动负载

时间:2014-11-26 00:23:23

标签: android android-camera

我尝试使用SurfaceView打开相机和显示器。这延迟了活动的加载很长一段时间。所以我想知道打开相机的最佳做法是什么。

2 个答案:

答案 0 :(得分:4)

来自http://developer.android.com/training/camera/cameradirect.html

  

获取Camera对象的实例是第一步   直接控制相机的过程。作为Android自己的相机   应用程序确实,建议访问相机的方法是打开   摄像头位于从onCreate()启动的单独线程上。这个   方法是一个好主意,因为它可能需要一段时间,可能会陷入困境   UI线程。在更基本的实现中,打开相机可以   被延迟到onResume()方法以方便代码重用和保持   控制流程简单。

所以官方建议使用单独的线程。这意味着修改活动以便能够处理相机尚未打开的状态,甚至可能无法完全打开。

如果您对多线程和Android应用程序开发不满意,最好让Activity停止运行。在大多数设备上,相机打开得非常快。

答案 1 :(得分:1)

虽然很难让相机启动得更快,但您可以通过Activity或其他方法将camera.open()卸载到后台线程,从而加快AsyncTask启动速度。您也可以在camera.open()之后将onResume()来电延迟一段任意的毫秒数,以便在相机加载发生之前Activity已经可见。

我不建议使用AsyncTask方法 - 使相机加载异步操作非常容易出错。

后一种方法也没用,因为相机在加载之后才能使用。