android webview卡顿检测_Android webview隐藏后跳转新页面input输入卡顿与白屏渲染慢的问题说明及修复方案...
关于此问题的说明:
Android System WebView 内核的bug:当webview页面中存在持续渲染(如跑马灯效果。banner轮播等)。页面被隐藏后会导致JS阻塞影响页面渲染效率。从66.0.3359.126版本到最新都存在此问题。
注意:
此问题必须是页面隐藏hide后,并且当前页面包含持续渲染(如跑马灯效果。banner轮播等)时才会触发此问题。如果你的页面不会隐藏、没有持续渲染逻辑可忽略此问题。
一般新窗体进入盖住老窗体,不会调用webview的hide方法,不会引发此问题。此问题常见于tabbar的切换,不同tab的webview页面只有一个是显示的,其他是hide的。或者开发者手动调用了plus.webview对象的hide方法。
解决方案:
方案1: 我们推荐开发者在页面被hide后,主动停用持续操作ui的js或css。
在隐藏的页面持续操作视图本身也不合理,影响性能。
在uni-app中,基础组件swiper和扩展uni ui的跑马灯,组件内部会判断,如果当前页面已经不再前台显示,会停止轮播。所以正常使用这些组件也不会遇到问题。
如果开发者引用了未做判断的三方组件,或者自己编写了持续操作视图的代码,则应该注意编写判断代码,在页面hide时,停止这些js或css。然后在恢复显示时,重新启用它们。
在uniapp中实现方案1的代码
//组件内监听webview隐藏停止动画(即将新增组件所在页面的生命周期,可以监听页面隐藏来停止动画)
mounted() {
// #ifdef APP-PLUS
const pages = getCurrentPages();
let currentWebview = pages[pages.length - 1].$getAppWebview();
currentWebview.addEventListener('hide', () => {
// webview隐藏,停止动画
})
currentWebview.addEventListener('show', () => {
// webview显示,开启动画
})
// #endif
},
//页面内监听页面隐藏停止动画
onShow() {
// 页面显示,开启动画
},
onHide() {
// 页面隐藏,停止动画
}
方案2: 当页面被隐藏时主动调用webview的pause方法,暂停这个webview里的所有js和css动画的运行
首先需要升级HBuilderX 2.3.8或更高版本。(如发现版本没更新请等待更新后再操作)
5+提供了新的API ,WebviewObject对象添加pause、resume方法。
void pause() 暂停Webview对象,停止js执行、DOM渲染
void resume() 恢复Webview对象,恢复js执行、DOM渲染
boolean isPause() 是否暂停,暂停则返回ture,否则返回false
uniapp用户:
nvue页面无此问题。忽略即可。
vue页面:
在页面存在持续渲染(如跑马灯效果。banner轮播等)的情况下。可在页面周期onShow、onHide分别调用webview的resume、pause方法即可
onShow() {
const w = this.$mp.page.$getAppWebview();
if(w.isPause()){
w.resume();
}
},
onHide() {
const w = this.$mp.page.$getAppWebview();
w.pause();
},
5+用户:
可以通过WebviewObject对象控制管理方式规避问题。当调用WebviewObject的show、hide方法时主动调用相关页面的pause、resume方法。
//创建页面 此页面包含持续渲染(如跑马灯效果。banner轮播等)的逻辑存在。
var a = plus.webview.open('list.html','list');
//当a页面要隐藏时可调用如下代码
var a = plus.webview.getWebviewById('list');
a.hide('none');
a.pause();
//当a页面显示时调用如下代码
var a = plus.webview.getWebviewById('list');
if(a.isPause()) {
a.resume();
}
android webview卡顿检测_Android webview隐藏后跳转新页面input输入卡顿与白屏渲染慢的问题说明及修复方案...相关推荐
- android 输入法如何启动流程_android输入法02:openwnn源码解析01—输入流程
android 输入法 02:openwnn 源码解析 01-输入流程 之后要开始 android 日文输入法的测试,因此现在开始研究 android 输入法.之前两 篇文章已经对 android 自 ...
- android webview_在 Flutter 中使用 WebView
本文示例代码可在微信公众号「01二进制」后台回复「WebView」查看下载 前言 我们知道在开发 Native App 时经常会有打开网页的需求,可供的选择通常只有两种: 在 App 内部打开网页 通 ...
- iOS性能优化-UI卡顿检测
前言 在实现需求的同时,能写出既优雅性能又高效的代码是每个开发者都在追求的目标,但是在实际开发中,随着每个版本需求的迭代,功能变得越来越复杂,加上开发者的意识不够或者一时疏忽,日渐复杂的工程很容易产生 ...
- sd 芯片测试软件,sd卡芯片检测工具基础知识解析
原标题:sd卡芯片检测工具基础知识解析 sd卡芯片检测工具是芯片行业常用的设备之一,那么用户在使用sd卡芯片检测工具的时候需要注意哪些问题呢? sd卡芯片检测工具主要测试内容有信道内测试用来测试接收器 ...
- 【ubuntu】ubuntu端向日葵键盘输入卡顿
文章目录 1.问题现象 2.解决思路 3.操作过程 附录:ubuntu输入法框架 1.问题现象 最近,利用向日葵远程操控ubuntu电脑时,出现键盘输入延迟的情况.具体表现为:鼠标操作正常.网页打开正 ...
- 关于android app启动页白屏黑屏和华为手机启动页图片跳跃闪屏的问题
1.产生原因 关于点击app图标出现白屏和黑屏的产生原因,首先要说的就是app的启动模式:冷启动(cold start),暖启动(warm start),热启动(lukewarm start). ...
- android 解决微信登录白屏样式问题
我们在做微信登录或者支付的时候,会用到SDK自带的两个页面 WXEntryActivity.WXPayEntryActivity 但是总会因为这两个页面的样式问题,出现白屏啊抖动啊的问题 解决其实很简 ...
- 微信支付android白屏,android 解决微信登陆白屏样式问题
咱们在作微信登陆或者支付的时候,会用到SDK自带的两个页面android WXEntryActivity.WXPayEntryActivityapi 可是总会由于这两个页面的样式问题,出现白屏啊抖动啊 ...
- android app启动白屏优化
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wuliang756071448/article/details/74067058 可以看到启动的时候 ...
最新文章
- 计算机网络学习笔记-1.2.3OSI参考模型(2)
- 关于IT测试中的一些问题。
- linux源代码剖析之include-asm
- ReactJS 开发过程中的一些使用心得
- 图论(一)—— 基本概念
- PASCAL程序设计语言 PDF 分享
- Cadence Allegro Vertex功能介绍使用方法Vertex与Slide的区别图文教程
- java中继承applet类_Java - 33 Java Applet基础
- 酷炫的可视化数据地图都是咋做的?10分钟学会
- JEOL即日起推出ECZ Luminous全新高分辨率核磁共振系统
- 37.softmax多元逻辑回归
- 用python画雨滴_python实现雨滴下落到地面效果
- XSS 工具之 beef
- dede后台更改mysql数据库密码
- MySQL week()函数及参数mode详解
- 将波旁威士忌的整洁Mixins提升到新的水平
- (Java高级程序设计-案例)-通过JDBC连接MySQL并对表进行增、删、改、查
- 绿标2.0达标秘笈之隐私安全问题破解
- CSDN报验证码错误
- PMSM弱磁控制的电压、电流极限圆幅值的含义
热门文章
- cad2016中选择全图字体怎么操作_打开CAD图纸字体丢失、重新选择怎么办?这样设置,一辈子用的到...
- redis php方案,Redis三种部署方案图文详解
- python 运算符重载_Python3面向对象-运算符重载
- 震惊世界的亚洲8大奇迹,你都知道几个?
- 豆瓣评分9分+,每一部看完不禁感慨!这里是神州大地!
- 新一代来袭︱不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?...
- 推荐系统中协同过滤算法实现分析
- php写带分页的留言板,php中分页程序之基于留言板详解_PHP教程
- js获取int类型长度_js代码比较大小前需要把string转换int
- tcl mysql_MySQL·TCL语言