關(guān)于這個(gè)bug也是排查了兩個(gè)鐘頭,咋一看以為是相機(jī)授權(quán)引起的痒谴,其實(shí)不然衰伯。下面就需要注意的地方列舉一下,以及如何排查該異常积蔚。
相機(jī)在打開意鲸,釋放過程中的非正常操作都會(huì)引起該異常。
1尽爆、相機(jī)需要在 SurfaceTexture可用的時(shí)候去打開怎顾,即在TextureView 的SurfaceTextureListener監(jiān)聽回調(diào)中通過CameraManager打開相機(jī);
????????一般情況下打開相機(jī)漱贱,釋放相機(jī)資源都是一個(gè)耗時(shí)操作槐雾,會(huì)置于子線程中,如果過早openCamera幅狮,TextureView 還沒有準(zhǔn)備就緒募强;
2、相機(jī)資源釋放對應(yīng)的需要在TextureView 被銷毀的時(shí)候釋放崇摄,即位于onSurfaceTextureDestroyed( )中; 當(dāng)然也可以手動(dòng)釋放擎值,需要注意第三點(diǎn);
3逐抑、釋放的時(shí)候需要置TextureView 的SurfaceTextureListener為NULL鸠儿;
????????因?yàn)門extureView.SurfaceTextureListener - surface在Activity或Fragment變?yōu)橛脩舨豢梢姷臅r(shí)候仍然可用,即surface處于活動(dòng)狀態(tài)厕氨,需要釋放TextureView 的監(jiān)聽进每。