Flutter引擎內(nèi)存泄漏問(wèn)題集合

案例一
發(fā)生場(chǎng)景

iOS 13 系統(tǒng),系統(tǒng)中文鍵盤在Flutter輸入文字后,返回原生,輸入框獲取焦點(diǎn)時(shí)閃退。

可能原因:

Flutter引擎中存在內(nèi)存泄漏,引擎釋放后,Input代理對(duì)象成為野指針

crash原因:

Flutter引擎中輸入框輸入時(shí)會(huì)在Window上添加一個(gè) FlutterTextInputView ,在引擎銷毀時(shí),這個(gè)FlutterTextInputView并沒(méi)有被釋放,在原生輸入框獲取焦點(diǎn)時(shí),系統(tǒng)會(huì)先調(diào)用這個(gè)FlutterTextInputView的獲取焦點(diǎn)方法來(lái)判斷,F(xiàn)lutterTextInputView中有個(gè)textInputDelegate指向了已銷毀的引擎地址,導(dǎo)致野指針錯(cuò)誤(暫時(shí)不知道為什么只有iOS13的系統(tǒng)中午輸入法獲取焦點(diǎn)時(shí)會(huì)走到代理方法中)

解決方案:

1、找到內(nèi)存泄漏的原因并解決(可能需要修改flutter的引擎代碼并打包,難度較大)

2、嘗試使用單例引擎

3、在有輸入框的Flutter頁(yè)面的deinit方法中將window上的FlutterTextInputView移除


image2021-3-12_13-57-33.png
總結(jié)

還有遇到的奇葩問(wèn)題,歡迎大家補(bǔ)充!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容