我想弄清楚哪些線程應該在Android中做什麼。Android相機:線程?哪個應該做什麼
我在官方文檔中發現的唯一的事情是,camera.open()
應該放在它自己的線程中。
什麼:
camera.startPreview()
camera.stopPreview()
camera.release()
這並不說明他們需要哪個線程。它們必須在主線程(ui線程)上運行嗎?或者我可以自由選擇?
爲什麼我想弄明白這一點? camera.startPreview()
當在主線程上運行時會導致我的應用程序在短時間內抖動/滯後,這會嚴重影響我的應用程序,因爲它放在viewPager中,我不希望相機總是預覽(這會導致沒有滯後,但佔用系統資源)。
任何想法?
Bravo,所以我是正確的,然後使用HandlerThread來處理*所有*相機操作。添加到原始問題; SurfaceView和SurfaceHolder.Callbacks怎麼樣?在我的測試中,回調函數是在主線程上創建的,所以我必須使用HandlerThread來處理這些(回調函數)? –
@KarlMorrison你當然可以委託,但這些工具所做的假設是運行'SurfaceView'的線程是處理回調的線程。引用狀態:_「當從運行SurfaceView的線程中使用此接口時,您需要仔細閱讀lockCanvas()和Callback.surfaceCreated()方法。」_ –