DCloud_Android_ST
DCloud_Android_ST
  • 发布:2020-03-17 20:34
  • 更新:2022-12-13 09:56
  • 阅读:14869

Android平台 storage性能优化说明

分类:HTML5+

HBuilderX2.6.6+起,Android平台对App本地storage数据存储进行了性能优化,包括plus.storage和uni的storage相关api,主要包括以下改进:

  • 数据存储方式优化
    之前的storage数据存储到Android系统的SharedPreferences中,现在修改为存储到数据库文件中。
    SharedPreferences 是 Android 平台为应用开发者提供的一个轻量级的存储辅助类,不适合存储大量的数据,当数据量过大时会影响性能甚至引发ANR。
    数据库文件存储则可以更好的支持大量数据存储,但需要注意JS与原生通讯时传输数据时也存在性能限制,因此不要一次存储大量的数据,建议每次存储数据不要超过100K。
  • 新增异步操作接口
    原来5+ API中plus.storage只提供同步操作接口,uni-app中的异步接口在App端也是封装同步接口实现的,之前并非真正异步。
    新版本已提供异步接口读取、保存数据,避免同步接口阻塞JS。uni-app中的异步接口也调整为真正的异步操作实现。

通过对比测试,以上优化单次读取速度提升10%,并发300次读取速度提升70%

应用升级向下兼容处理

为了确保应用的新版平滑兼容,当基于新版打包的App升级覆盖老版本App时,会在应用启动时自动将原来存储在SharedPreferences中的数据迁移到数据库文件中,开发者不需要做特殊处理就可以读取到老版本保存的数据。
如果老版App在手机端已经保存了大量数据,覆盖升级新版后,第一次运行新版会因为迁移数据而导致splash界面显示时间稍微变长一些。

注意事项
SharedPreferences方式存储的数据向数据库文件存储的升级,是不可逆的过程。
举个极端例子,开发者已有app版本1.0,并且已经在手机端存储了storage数据,然后开发者使用HBuilderX2.6.6+打包生成2.0的app,新app覆盖安装1.0版后,将storage数据从SharedPreferences迁移到了数据库文件。接着开发者又回退了HBuilderX版本,使用HBuilderX2.6.6-的版本,打包生成了3.0app,那么这个3.0app覆盖安装到手机上后,使用plus.storage和uni的storage相关api将无法读取历史数据,相关api会继续操作SharedPreferences方式存储的数据。

plus.storage新增异步接口的清单如下:

uni的storage操作api无变化,见:https://uniapp.dcloud.io/api/storage/storage?id=setstorage

0 关注 分享

要回复文章请先登录注册

猫猫吧

猫猫吧

请问这个“数据库文件”方式就是指的sqlite吗
2020-08-08 09:42
第七十三天至

第七十三天至

回复 DCloud_Android_ST :
能不能修下(https://ask.dcloud.net.cn/question/91003 的 问题),我就要上线了
2020-03-18 12:26
DCloud_Android_ST

DCloud_Android_ST (作者)

回复 第七十三天至 :
是的
2020-03-18 12:22
第七十三天至

第七十三天至

包括 plus.storage 吗?
2020-03-17 21:13