美文网首页
iOS10遇见的坑

iOS10遇见的坑

作者: AlvinCrash | 来源:发表于2018-02-25 17:58 被阅读73次

    好久未更新日志,写点总结吧

    1、最近发现iOS10上面有个崩溃挺严重的,使用FMDB的时候,内部会调用一个函数sqlite3_prepare_v2,这个函数在iOS10.2上经常崩溃,但是在iOS10.1和10.3上没有崩溃,看来是系统的一个Bug。

    首先分析场景:这个问题出现在我们的商品详情页,这个页面的特点是视图结构非常复杂,内嵌了3个webview,内存消耗很高。我们在页面一进入的时候就会往数据库里写一条数据,记录浏览的商品信息。由于是购物的必经页面,所以崩溃很厉害。

     怎么解决呢?使用其他的存储方式吗?切换的成本有点大,数据很有可能丢失。但是又不能强制用户升级系统,只能想办法规避。可不可以减少写数据的频次呢?或者先降低内存的使用?这些都是突破口。

    于是,我们从这两个方面入手,先减少写的频次,这点可以由每次进入页面时写数据改为定时去写,先把要记录的数据存到内存中,然后批量写入,这样也可以减少读写的时间。内存方面,之前我们这个页面采用的UIWebView,众所周知,UIWebView相当耗内存,于是我们改成使用 WKWebView。这个方案跟随新版本上线之后,崩溃率降低了80%。由于数据比较敏感,就不贴图了。

    2、WebGL问题:

      在一次活动中,H5页面用到了一个webGL的库,引发了iOS10上的崩溃,崩溃的关键词是  libGPUSupportMercury.dylib _gpus_ReturnNotPermittedKillClient  。

    这个问题是在app退后台之后,系统检测到有web页面在渲染,从而杀掉了进程,导致崩溃。

    解决方案比较简单:当app退后台时,发一个js事件给H5,H5接收到以后,关掉WebGL或者直接把H5页面从当前视图中remove掉。当app返回前台时,再重新加载

    https://www.jianshu.com/p/e91b6e4cf8ee

    相关文章

      网友评论

          本文标题:iOS10遇见的坑

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