【每日学点鸿蒙知识】webview性能优化、taskpool、热更新、Navigation问题、调试时每次都卸载重装问题
1、HarmonyOS webview页面第二次,第三次打开感觉和第一次打开速度差不多,有优化吗,或者有没有webview秒开方案之类的?
目前没有webview秒开的方案,针对web场景的优化参考一下文档:https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-web-develop-optimization-V5
ArkWeb(方舟Web)是一个Web组件平台,旨在为应用程序提供展示Web页面内容的功能,并为开发者提供丰富的能力,包括页面加载、页面交互、页面调试等功能。在这个数字化时代,页面显示的速度直接体现了应用的流畅性,影响着用户对应用的印象和体验。快速加载并展示页面不仅可以吸引用户留在应用上,还能减少他们的等待时间和不耐烦情绪,从而提升用户的满意度。
Web页面的显示过程可以被分为多个阶段,包括DNS解析、建立连接、发送请求、接收响应、解析HTML、下载资源等步骤。在这个过程中,许多因素都会对页面显示速度产生影响,比如网络延迟、服务器响应时间、页面大小、资源压缩等。为了提升Web页面显示速度,开发者可以在Web页面加载、资源下载和页面渲染等方面进行优化,以提升性能和用户体验。
本文将介绍以下常见的优化方式。
- Web页面加载优化:Web页面加载速度对于用户体验至关重要,提高页面加载的速度可以直接提升应用的流畅性。
- JSBridge:通过JSBridge通信,可以解决ArkTS环境的冗余切换,避免造成UI阻塞。
- 同层渲染:通过将页面元素分层渲染,可以减少页面重绘和重排的次数,提高页面渲染效率。
ArkWeb(方舟Web)为开发者提供了优化页面显示速度的方法。通过采取这些优化方式,开发者可以改善应用程序的性能和用户体验,使用户能够更快速、更流畅地浏览Web页面,从而提升用户满意度和留存率。
2、HarmonyOS 关于Concurrent函数在taskpool多线程中使用时候如何实时传输数据到外部?
请参考此文档下的Task.sendData:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-taskpool-V5#ZH-CN_TOPIC_0000001884757654__task
任务池(taskpool)作用是为应用程序提供一个多线程的运行环境,降低整体资源的消耗、提高系统的整体性能,且您无需关心线程实例的生命周期。您可以使用任务池API创建后台任务(Task),并对所创建的任务进行如任务执行、任务取消的操作。理论上您可以使用任务池API创建数量不受限制的任务,但是出于内存因素不建议您这样做。此外,不建议您在任务中执行阻塞操作,特别是无限期阻塞操作,长时间的阻塞操作占据工作线程,可能会阻塞其他任务调度,影响您的应用性能。
您所创建的同一优先级任务的执行顺序可以由您决定,任务真实执行的顺序与您调用任务池API提供的任务执行接口顺序一致。任务默认优先级是MEDIUM。
当同一时间待执行的任务数量大于任务池工作线程数量,任务池会根据负载均衡机制进行扩容,增加工作线程数量,减少整体等待时长。同样,当执行的任务数量减少,工作线程数量大于执行任务数量,部分工作线程处于空闲状态,任务池会根据负载均衡机制进行缩容,减少工作线程数量。
3、HarmonyOS 是否有类似热更新插件化的机制,允许APP更新特定的组件?
HarmonyOS应用市场基于安全合规、用户隐私角度的考虑不提供热修复能力。考虑到应用紧急故障快速修复的诉求,HarmonyOS应用市场可以提供快速上架方案,如果应用出现紧急修复情况,可以快速审核,通过快速审核+应用端内弹框可以加快应用更新速度。
4、HarmonyOS 使用uiObserver.on(‘navDestinationUpdate’, this.navDestinationUpdateCallback) 监控路由跳转,在Navigation里使用router跳转页面,router页面返回也会触发这个回调,并且拿到的index 是-1?
因为router跳转的页面中有NavDestination组件,所以能监听到,但是这个NavDestination组件不在Navigation的栈中,所以会返回-1。
5、HarmonyOS DevEco Studio 为什么每次运行 和debug 都会卸载重新安装?
设置keep Applications data,请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-run-debug-configurations-V5#section531811771410
在调试阶段,HAP在设备上的安装方式有2种,可以根据实际需要进行设置。
- 安装方式一:先卸载应用/服务后,再重新安装,该方式会清除设备上的所有应用/服务缓存数据。
从DevEco Studio 4.1 Canary2版本开始,支持当代码无变化时,不进行推包安装。即根据模块有无变化来判断是否重新推送安装模块包,在运行调试时仅将有变化的模块及依赖它的模块重新推送安装至设备上。如entry依赖了HSP模块,当HSP模块有变化,运行调试时将同时推送安装HSP模块和entry模块。 - 安装方式二:采用覆盖安装方式,不卸载应用/服务,该方式会保留应用/服务的缓存数据。
设置方法如下:
单击Run > Edit Configurations,设置指定模块的HAP安装方式,勾选“Keep Application Data”,则表示采用覆盖安装方式,保留应用/服务缓存数据。