美文网首页
Flutter引擎内存泄漏问题集合

Flutter引擎内存泄漏问题集合

作者: 香蕉你个菠萝 | 来源:发表于2021-07-19 17:37 被阅读0次
    案例一
    发生场景

    iOS 13 系统,系统中文键盘在Flutter输入文字后,返回原生,输入框获取焦点时闪退。

    可能原因:

    Flutter引擎中存在内存泄漏,引擎释放后,Input代理对象成为野指针

    crash原因:

    Flutter引擎中输入框输入时会在Window上添加一个 FlutterTextInputView ,在引擎销毁时,这个FlutterTextInputView并没有被释放,在原生输入框获取焦点时,系统会先调用这个FlutterTextInputView的获取焦点方法来判断,FlutterTextInputView中有个textInputDelegate指向了已销毁的引擎地址,导致野指针错误(暂时不知道为什么只有iOS13的系统中午输入法获取焦点时会走到代理方法中)

    解决方案:

    1、找到内存泄漏的原因并解决(可能需要修改flutter的引擎代码并打包,难度较大)

    2、尝试使用单例引擎

    3、在有输入框的Flutter页面的deinit方法中将window上的FlutterTextInputView移除


    image2021-3-12_13-57-33.png
    总结

    还有遇到的奇葩问题,欢迎大家补充!

    相关文章

      网友评论

          本文标题:Flutter引擎内存泄漏问题集合

          本文链接:https://www.haomeiwen.com/subject/sishmltx.html