Android soundpool release卡住

memoryjs發表於2020-12-17

前兩天做一個feature,用soundPool去播放聲音,但是在結束的時候會卡住,以為是程式哪裡出了問題,經過排查,發現是因為soundPool在release的時候卡住了將近20s左右,而且soundPool如果在你頁面銷燬後,10s不釋放,系統就會丟擲fatal的異常,告訴你soundPool沒有在10s釋放

 

那麼問題來了,為什麼soundpool會卡住,我百度,google了很長時間,都是在講什麼時候load,什麼時候release,為什麼有時候soundPool沒有聲音之類的問題,沒有人遇到soundPool卡住的問題,跟蹤了原始碼,發現最後執行到了native層去release了,這就難辦了,於是繼續排查

 

最後發現是在load這裡出了問題,我的Android系統是4.4的,在SoundPool第一次load音訊檔案的是,load是本地raw檔案的資原始檔,但是沒有觸發器completeListener函式,也就是說,系統一直處於loading的狀態,一直沒有complete,這個時候,我去release它,導致了卡頓,我真是...

 

最後我把第一個要load的檔案,放到了sd卡里面去load,發現後面的raw檔案下的資原始檔都可以正常載入了,如果把raw檔案放第一個load就不行,這估計是系統bug,但是做安卓開發,只能繞開系統bug,相容系統bug,我太難了

相關文章