APP开发平台 > Blog > APP怎样进行本地存储和图片缓存?

APP怎样进行本地存储和图片缓存?

  数据的本地存储和图片缓存可以极大地提高 app 的用户体验、提高 UI 响应速度、减少网络使用。

  1.uzStorage

  uzStorage 比标准的 localStorage 更安全易用。

  举个栗子: localStorage 有大小限制、异步会导致一些安全、不能存储对象等问题,但这些问题均在 uzStorage 中得到了解决。

  2.偏好设置

  3.文件

  APICloud 提供了标准的文件操作接口,支持同步和异步的调用方式。使用下面的 API 操作文件:

  api.readFile({
sync:false,// 是否同步,默认 false
path:"PathToFile"// 文件路径,支持绝对路径和文件路径协议如 fs://、widget:// 等

  }, function(ret,err){

  //ret = {status:true,data:""}

  }); //err = {code:0,msg:""}

  api.writeFile({
path:"PathToFile",// 文件路径,支持绝对路径和文件路径协议如 fs://、cache:// 等,不支持 widget:// 目录,

  该目录只读
data:"data",// 文件内容

  append:false// 是否以追加方式写入数据,默认 false,会清除之前文件内容 }, function(ret,err){

  //ret = {status:true}

  }); //err = {code:0,msg:""}

  4.database

  使用“db”模块操作数据库,“db”模块封装了手机常用数据库 sqlite 的增删改查语句,可实现数据的本地存储,极大地简化了数据持久化问题,并且支持同步接口。

  5.存储容量

  APICloud 提供了关于存储容量的 API,代码如下:

  api.getFreeDiskSpace({
sync:false// 执行结果的返回方式。为 false 时通过 callback 返回,为 true 时直接返回,默认 false

  }, function(ret,err){
//ret = {size:1024} 剩余存储空间大小,单位为Byte,数字类型。(-1:无存储设备、-2:正在准备USB存

  储设备、-3 :无法访问存储设备) });

  api.getTotalSpace({
sync:false //执行结果的返回方式。为false时通过callback返回,为true时直接返回,默认false

  }, function(ret,err){
//ret = {size:1024} 总存储空间大小,单位为Byte,数字类型。(-1:无存储设备、-2:正在准备USB存储

  设备、-3 :无法访问存储设备) });

  api.getCacheSize({
sync:false// 执行结果的返回方式。为 false 时通过 callback 返回,为 true 时直接返回,默认 false

  }, function(ret,err){
//ret = {size} 缓存大小,单位为Byte,数字类型。(-1:无存储设备、-2:正在准备USB存储设备、-3:无

  法访问存储设备)

  });

  api.clearCache({ timeThreshold:10//(可选项)清除多少天前的缓存,默认 0

  }, function(ret,err){ }); //清除完成

  6.沙箱机制

  在 Android 和 iOS 中均采用虚拟沙箱的机制来保障数据存储的安全和独立,App 只能访问 自己文件系统的沙箱区域。沙箱位置如下。

  • Android 的默认沙箱位置:sdcard/UZMap/appId。 


  • iOS 的默认沙箱位置:Documents/uzfs/appId。 


  7.资源访问协议 


  APICloud 资源被存放在 app 安装包(ipa 包或者 apk 包)中或应用沙箱中。沙箱分为 APICloud 应用虚拟沙箱和 Native 应用真实沙箱,真实沙箱是操作系统为 app 在设备内部存储上分配的空间,不可见,只允许 app 本身访问。

  
8.图片缓存 


  对于图片缓存,可使用如下代码:

  • 
 var img = $api.byId("myImg");

  • api.imageCache({

  • 
 url:'http://example.com/dir/file.png'

  • },function(ret,err){

  • 
 if(ret && ret.status == true){

  • } img.src = ret.url;

  • 
else{
} //处理错误 
}); 


  上述代码首先在参数中指定了要缓存的远程图片路径(url),在之后的回调函数中判断是否缓存成功(if(ret && ret.status == true){}),如果成功就可以使用 ret.url 来更新

  标签。ret.url 是图片缓存到本地后的路径。

  更多app资讯,请关注www.apicloud.com

  提交app定制需求,了解报价和周期:

  https://app.apicloud.com/index?uzchannel=500


2018-07-09 来源:APICloud

APP

高效的App定制平台,标准化、便宜、快!

提交APP定制开发需求
x