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新增异步接口的清单如下:
- plus.storage.clearAsync
 异步清除存储数据
- plus.storage.getAllKeysAsync
 异步获取所有键名
- plus.storage.getItemAsync
 异步获取存储的键值
- plus.storage.setItemAsync
 异步存储键值
- plus.storage.removeItemAsync
 异步删除键值
uni的storage操作api无变化,见:https://uniapp.dcloud.io/api/storage/storage?id=setstorage
 
             
             
             
			 
                                                                             
            
16 个评论
要回复文章请先登录或注册
老益
老益
y***@cubenergy.com.cn
是是是是
DCloud_Android_ST (作者)
9***@qq.com
4***@qq.com
8***@qq.com
愿随风丶飘雪
愿随风丶飘雪