IOS混合应用切换app闪屏bug总结

news/2024/11/29 1:38:41/

现象

ipad mini3 在app切入后台,重新切回app,页面重新渲染(闪屏)

排查问题

  • 对比资源较少的页面,偶发闪屏(概率极小),资源较大的页面频繁闪频(概率极大)。大致定位原因是webview本身有所限制。
  • 对比安卓和ios,发现安卓没有问题,ios才有。大致定位原因是ios的webview的问题
  • 开启safari检查器,在控制台的时间线(timeline)上看到,切换至后台重新打开app后频繁触发full gc。

原因

webkit的绘制机制

webkit在绘制页面时会将结构分为各种层,当层足够大时就会变成很大的平铺层。这样一来webkit在每次页面结构发生变化时不需要都渲染整个页面而是渲染对应层了,这对渲染速度来说相当的重要。webkit会给各种层分配一定大小的“后备存储器”在内存里缓存起来,这就是绘制层的上下文,通过这个上下文就可以很容易的实现各种效果(动画,3D变换等)

ios内存分配策略

iOS上当内存不足时,根据uiwebview和wkwebview的不同,它自身有不同的回收策略。

  • 如果是uiwebview的app,内存不足时整个app会崩溃,即闪退。
  • 如果是wkwebview的app,内存不足时,单个wkwebview会崩溃。也就是所谓的应用还在,而页面白屏。
    在这里插入图片描述
    在这里插入图片描述

解决方案

优化资源大小

参考文档

App平台iOS设备上因内存不足导致白屏、闪退的问题解决方案
Minor GC、Major GC和Full GC之间的区别
ios transition translate 闪屏问题总结


http://www.ppmy.cn/news/455007.html

相关文章

Windows10环境下载安装Oracle19c教程

Windows10环境下载安装Oracle19c教程 前言1. 官网下载2. 运行setup.exe2.1 解压缩2.2 报错解决 3.正式安装3.1 配置选项3.2 系统类3.3 oracle主目录用户3.4 安装位置3.5 先决条件检查3.6 安装产品3.7 安装完成3.8 完全卸载oracle(非必备) 4. 安装验证4.1 CMD验证4.2 SQL Plus4.…

html背景尺寸设置

background-size: 数值 * px:设置背景图像的高度和宽度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个 值会被设置为 “auto”。 * percentage:以父元素的百分比来设置背景图像的宽度和高度。第一个值设置宽度&…

Android设置壁纸的大小

参考文章:http://blog.csdn.net/shenshizhong/article/details/74011549 设置壁纸 在Andorid中,设置壁纸大小一般通过默认的WallpaperManager: //初始化WallpaperManager private WallpaperManager mWpm;public void initData(){// 初始化W…

Google默认壁纸的尺寸要求

google默认的壁纸必须是宽高比为12:10, 而我们的平板屏幕宽高比是6:10, 所以整张壁纸相当于是一个画布, 而平板主屏显示的壁纸只是画布的一部分 (也就是下图竖着的小框框住的部分). 当主屏往左滑时, 竖着的小框会往左移, 所以屏幕背景会变, 这是google默认风格. (也就是说, 壁纸…

给Android手机设置的壁纸应该是多大尺寸

如果在Android手机中设置一个新的壁纸,那么这个壁纸的尺寸采用多大合适呢? Google了一下其他人的解释,找到下面这个web: 教你选择合适的Android手机壁纸尺寸 320*480 480*800 480*854 下面转帖于下: 2011-8-23 18:25:48 上传 下载附件 (284.33 KB) 机友们会发现从各种资…

十、docker学习-docker核心之虚拟化技术

虚拟化技术 云计算 云计算的道理是简单的,说白了,就是把计算机资源集中起来,放在网络上。但是,云计算的实现方式,就非常复杂了。 举两个例子: 如果你只是在公司小机房摆了一个服务器,开个FT…

电脑开机密码忘记了怎么办?使用优盘重装系统

大家可以在网上搜索,其他方法。尽量找回密码。我这是因为已经很久没有使用这个电脑,而且c盘也没有怎么重要资料的情况下。我才选择重装系统的。 请慎重。 前期准备: 1、准备一个4G以上的U盘 2、备份U盘重要文件,制作过程中会格式…

Planning-oriented Autonomous Driving 解析

abstract 现代自动驾驶系统通常是模块化的序列任务,这种方式很容易造成累积误差和任务协调不足,因此设计一个端到端架构,从全局的视角出发为agent的交互提供互补的特征提取。 introduction (a) Most industrial solutions deploy separate …