- 当前 Bug 的表现(可附上截图)
页面上用setInterval写的活动倒计时,如果当前页面上下滑动,很明显能看到倒计时暂停,然后突然会连着跳几秒,如果不触摸页面,倒计时恢复正常了
注明:当前模拟的代码片段数据量不是很多,倒计时看着只是稍微暂停,但在实际项目中,页面数据量很大,倒计时卡顿会很明显
- 预期表现
倒计时显示正常
- 复现路径
- 提供一个最简复现 Demo
框架类型 | 问题类型 | 操作系统 | 操作系统版本 | 手机型号 | 微信版本 |
---|---|---|---|---|---|
小程序 | Bug | Android | 8.0 | 华为p9 | 6.7.3 |
问题已复现,我们会在后续版本中进行修复。
因为历史原因,小程序页面其实是有两个实现,用为暴露的 api 一样,所以开发者可以不用去理解实现。基本上可以认为是通过 usingComponents 来辨别是走了哪种实现的。带了 usingComponents 字段会走自定义组件面世后的新实现,在更新上性能会更好。所以可以尝试按照部分层主所说的方式补上这个字段,或者将要频繁更新的那部分抽成自定义组件。
亲,倒计时的显示安卓系统滑动界面,数值会停住。补了这个字段也不行呀
噢,你的问题是滚动时 setData 无效吧。安卓端可能在 webview 和 jscore 两边通信会存在阻塞问题,如果频繁发生事件数据通信的话,也有可能让 setData 延迟。
目前这个除了合并零碎的 setData、去除无用的事件监听之外可能没有很好的解决方案。我们近期有开始在摸索如何处理类似的小范围更新问题,有兴趣的话可以继续关注小程序的更新。
我很有兴趣呀!
不过这个问题目前是不是没的解决办法了? 我界面滚动监听是必须的,因为我要知道它滚了多少,滚动方法本身我没有进行setData。倒计时是肯定要每秒都setData的呀
这是小程序中安卓下,滚动会导致所有异步阻塞,包括setInterval,触底翻页等。
我碰巧知道解决办法。
给页面对应的 `.json` 文件(即页面的配置文件),添加如下配置,即可解决问题。
{
"config"
: {
"usingComponents"
: {}
}
}
如果是原生写的话,不要config这一层。我用mpvue 写的打包出来的文件,就没有config这一层 了。
{
"usingComponents"
: {}
}
好的,我试一下,谢谢啦
我也赶紧去试试!
不管用呀。。。
你尝试的怎么样
加 usingComponents 效果怎么样?
求官方看到回复下呀,试了好久都不知道怎么解决
安卓卡的要命啊
我现在如果在config加了
"usingComponents": {}
在安卓上 onPageScroll就可以及时渲染了
但是,在iOS上又开始卡顿了
去掉这句iOS正常了,安卓又开始卡顿。这怎么办?
你可以新开个帖子,找找官老爷,看看是不是新问题出来了。
usingComponents: {} 加上这句就可以了,很神奇啊
你不是一个人,顺便问下,你是用原生还是用的mpvue写的?
反正我是原生的
mpvue写的
我是mpvue,但是试过最简单的原生写也会
我这个问题都好长时间了,至今没有解决。。。 这是其一。 其二:倒计时从 8-0,跳转界面。安卓显示到0 后跳转。ios微信7.0版本,它显示从8到1没有0直接显示8然后跳转页面。时间时一样的,显示不一样。
列表时计时是怎么计时的