跨平台移动开发实战(九)------移动端本地存储方案

【移动端页面适配】一.H5的页面存储(本地存储);二.元素的拖拽;三.移动页面的布局;四.常用的相对单位 阅读详情

虽然数据都有Server端提供,但移动程序开发一般都需要支持offline使用模式,因此需要移动客户端本地存储数据,我按数据类型不同分为三种实现方案:

  • 简单数据(key-value):HTML5 Web Storage
  • 复杂数据(SQL):HTML5 Web SQL Database
  • 二进制文件(File):File API & Phonegap plugin

1)简单数据(key-value)

对于一般的简单数据存储,我推荐用key-value,一个是保持数据结构简单,另外就是HTML5 Web Storage从测试情况来看在各个平台上支持非常好,从http://www.html5rocks.com/en/features/storage也可以查询到支持情况:

具体使用我就不多说,但需要强调的是,web storage api是基于字符串,如果数据是json格式,得自行做一些转化,如下例所示:

存:
window.localStorage.setItem(getLocalKey("stMobileCrList"), JSON.stringify(crFilter));
取:
var crFilter = window.localStorage.getItem(getLocalKey("stMobileCrList"));
crFilter = JSON.parse(crFilter);
2)复杂数据(SQL)

现在很多平台的浏览器也内置了数据库,并基于HTML5 Web SQL Database API来暴露使用接口,支持情况没有web storage好,从上图可知,还不能在IE10上应用,这就导致会在WP上有问题。

3)二进制文件(File)

存储File就需要通过JS访问本地文件系统,传统的浏览器由于安全限制没有提供这个能力,但HTML5提供了File access的标准制定,很多平台浏览器也通过沙箱的形式开始支持这个特性,不过这块支持情况不太好:

基本上在移动平台上都不能支持File API,因此在移动平台上需要采取其他方法,幸好,Phonegap基于 HTML5的标准提供了在移动平台上的支持,如下例代码所示(Android/IOS):

window.requestFileSystem(
    LocalFileSystem.PERSISTENT, 0, function onFileSystemSuccess(fileSystem) {
        fileSystem.root.getDirectory(dirName, {create: true, exclusive: false}, function(dirEntry){
            var dirPath = dirEntry.fullPath;
            console.log(dirPath);
            var fileTransfer = new FileTransfer();
            var filePath = dirPath +"/"+ fileName;
            fileTransfer.download("http://"+host+":"+httpPort+"/syncFile?token="+token+"&id="+id, filePath,
                 function(theFile) {
                    console.log("download complete: " + theFile.toURI());
                 },
                 function(error) {
                     console.log("download error source " + error.source);
                     console.log("download error target " + error.target);
                     console.log("upload error code: " + error.code);
                 }
             );
        }, fail);
       }, 
fail);

这段代码在Android和IOS上都没问题,它就是一个标准的创建并写文件的操作,Phonegap实际上就是通过plugin把js的调用转化为native的File操作,具体phonegap实现机理我会在单独在分析phonegap内核这个部分里详细分析。但Phonegap在其他平台上如webos就支持不太好,没有完全实现HTML File API,因此需要借助与Webos本身的File API,比如file picker service能完成对本地文件系统的访问:

enyo.windows.openWindow("filepicker.html", "File Window");



跨平台移动开发实战(一)------总体架构和技术路线 最近两个月以来工作之余一直在做一件事情,就是把现在的产品移植到各主流移动平台上。其实需求很简单,就是想让现有的产品能在各大移动平台上有个端,让客户能移动办公。这个需求大概也是个大众化普遍的需求,于是乎就饶有兴趣地把它当作一个主题比较深入地研究了一下。两个时间自己没事儿就倒腾一下,做了一个像模像样的产品,并覆盖到IOS、Andriod、WebOS、Chrome和Windows Phone(还在开发中 阅读详情

相关推荐

《uni-app跨平台开发完全指南》- 10 - 本地存储

本文带你详细了解uni-app中的本地存储技术及应用场景。什么是同步存储?什么是异步存储?以及数据安全的重要性。通过合理使用本地存储,可以显著提升应用性能与用户体验。

技术探索者之路 - 一个专注于软件开发技术的实践型博客,涵盖移动应用开发、后端架构、Python编程和算法数据结构等核心技术领域。欢迎各位道友光临,喜欢本博主的别忘了一键三连哦。 1146

uni-app 移动端本地储存数据库sqlite

1.manifest.json勾选sqlite权限。你可以根据自己的需求,修改部分代码。也可以通过修改json配置文件。

刘刘刘的博客 4507

OpenBullet2 学习研究2-Conditions条件之KeyCheck的使用

上一节我们学习了如何安装Openbullet2以及如何新建一个配置,最后我们再配置里面新建一个Http的请求块,帮助我们发送了第一个请请求。这一节我们来学习check块。当我们发送请求以后,请求返回的内容是否是我们想要的,或者请求发送正确没有,这个我们怎么判断呢?这个时候就要用到check块了。

956

设计一个移动应用的本地缓存机制

在手机应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在iOS设备中加一个缓存的机制,前面一篇文章介绍了iOS设备的内存缓存,这篇文章将设计一个本地缓存的机制。 功能需求 这个缓存机制满足下面这些功能。 1、可以将数据缓存到本地磁盘。 2、可以判断一个资源是否已经被缓存。如果已经被缓存,在请求相同的资源,先到本地磁盘搜索。 3、可以判断文件缓存什...

diejia1113的博客 328

SAP License:SAP会计凭证抬头的字段状态控制

FI模块的同事一般都知道在FI中有个字段状态变式,可以控制在凭证输入时哪些字段是必输、哪些可选哪些隐藏,但这只对凭证行项目中有效,你是否想过对于凭证抬头的字段是哪控制呢? 在中国,会计附件上都要带一个附件张数字段,但SAP的默认配置中没有这一字段,并非SAP没有设置此字段,而是我们没有配置这一字段。如果需要在凭证输入时放出分支号(BRNCH)、附件页数(NUMPG)等字段,在个人参数文件中加入参数CSF,参数值AR,即可。如下图: 实际上,这是对凭证国家的一个设置,在SAP中,配置了AR这个国家..

SAP权限管控|SAP用户权限管理|SAP权限合规检查|SAP全日志管理 2221

英飞凌TC3xx的GTM模块到底有多强?从PWM生成到电机驱动,一篇讲透车载定时器核心

本文深入解析英飞凌TC3xx系列中的GTM模块在汽车电子领域的强大功能,从PWM生成到电机驱动的全链路设计。通过模块化架构和硬件级解决方案,GTM显著提升系统精度和响应速度,适用于电机控制、电源管理等复杂场景。文章结合实战经验,详细拆解GTM的技术实现和性能优势。

weixin_27741699的博客 201

移动端Web开发

HTML5是移动端开发最常用的技术,熟悉HTML5新标签和Api以及CSS3的新的Api,可以使你的网页更加的绚丽多彩,并且开发出你意想不到的网页效果。学完此课程,你编写的代码就可以移动设备上完美兼容啦。

告别二极管发热!手把手教你用MOS管搭建同步整流电路(附死区时间设置避坑指南)

本文详细介绍了如何利用MOS管搭建同步整流电路(SR),以替代传统二极管,显著降低导通损耗和发热问题。内容涵盖自驱动方案的选择、关键元件参数计算、PCB布局要点及死区时间设置技巧,帮助工程师优化电源设计效率。

weixin_29540599的博客 450

Leon移动端应用开发:React Native跨平台方案完整指南

🧠 Leon作为开源个人助手项目,正积极探索移动端应用开发,特别是React Native跨平台方案。本文将为您详细介绍Leon项目的移动端开发思路、技术架构和未来规划,帮助您了解如何为个人助手构建跨平台移动应用。 ## Leon项目概述与移动端需求 Leon是一个开源的个人助手,可以运行在您的服务器上。它能够响应您的语音和文本指令,完成各种任务。随着移动设备的普及,开发移动端应用成为Leo

gitblog_00972的博客 1101

基于车辆运动学的规划算法 - Hybrid A*/ State Lattice Planning (前置知识:自行车模型、Dubins、Reeds Shepp、多项式曲线、螺旋曲线)

本文将按顺序讲解基于车辆运动学的规划算法,以及需要的前置知识:自行车模型、Dubins和Reeds Shepp曲线、多项式曲线和螺旋曲线

BigDavid123的博客 4857

告别Visual Studio!用MSYS2+GCC+CMake在Windows上打造Linux式C++开发环境(保姆级避坑)

本文详细介绍了如何在Windows上使用MSYS2+GCC+CMake搭建Linux式C++开发环境,替代Visual Studio。从MSYS2的安装配置、MinGW-w64 GCC工具链的部署,到CMake项目的创建与构建,提供了保姆级教程和常见问题解决方案,帮助开发者高效过渡到命令行开发模式。

weixin_30298497的博客 324

Flutter跨平台开发秘籍:50个统一移动端与Web端的解决方案

Flutter作为一款强大的跨平台UI框架,让开发者能够使用单一代码库构建高性能、美观的移动应用和Web应用。本指南汇集了50个实用的Flutter跨平台开发技巧与解决方案,帮助开发者轻松应对移动端与Web端的统一开发挑战,提升开发效率和应用质量。 [![Flutter跨平台开发概览](https://raw.gitcode.com/gh_mirrors/flu/flutter-tips-and

gitblog_00869的博客 380

【数据集】中国区域地面气象要素驱动数据集(CMFD)2.0

中国区域地面气象要素驱动数据集(CMFD)2.0

WW、forever的博客 2975

【限时免费】 Doocs MD 编辑器移动端内容清空功能优化方案

Doocs MD 编辑器移动端内容清空功能优化方案 【免费下载链接】md ✍ WeChat Markdown Editor | 一款高度简洁的微信 Markdown 编辑器:支持 Markdown 语法、自定义主题样式、内容管理、多图床、AI 助手等特性 ...

gitblog_01406的博客 646

uniapp:实现圆盘/色盘取色器组件,圆环颜色选择器用户可拖拽选择颜色值实时更新用户选择的颜色数据,拖动丝滑流畅不卡顿(uniapp小程序/手机h5网页/安卓苹果app/nvue都能使用,详细源码)

uniapp项目中使用颜色选择器,uniapp实现简单圆形色盘、取色器、拾色器组件,Uniapp自定义颜色选择器取色器,圆形的颜色选择器,uniapp颜色拾取器,拾色器 取色器 颜色选择器,uniapp vue3圆形的色盘取色,uni-app如何封装一个取色器组件,用uniapp写调色板,uniapp颜色选择器插件,实现圆环颜色选择器,Uni-app在App端使用颜色选择器,uniapp微信小程序圆盘颜色选择,uniapp H5网页实现圆形的取色器,使用canvas实现的简单圆形色盘,可自定义相关大小,un

✅ 精选推荐文章 4534

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OOTDiffusion移动端应用开发:Flutter集成方案

你是否还在为传统AR试穿应用的卡顿延迟烦恼?是否因服务器依赖导致离线无法使用而沮丧?本文将带你实现OOTDiffusion的Flutter全端集成方案,通过**本地推理优化**与**跨平台框架**的完美结合,打造毫秒级响应的AI试穿体验。读完本文你将获得: - 完整的Flutter+PyTorch Mobile集成架构 - 模型轻量化与推理加速的实战技巧 - 前后端数据交互的最佳实践 - 性能优化...

gitblog_00025的博客 1118

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

documenso移动端应用开发:React Native方案探索

你是否曾在外出时急需签署一份重要合同?根据DocuSign 2024年全球电子签名报告,68%的用户希望在移动设备上完成签署流程,但现有解决方案普遍存在加载缓慢、签名体验割裂、离线功能缺失三大痛点。作为开源电子签名工具的领军者,documenso亟需构建一套原生移动端解决方案,将Web端的强大功能延伸至移动场景。本文将系统剖析基于React Native的跨平台实现方案,从架构设计到性能优化,提供...

gitblog_00010的博客 1179

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

关于移动端相关测试总结

冷启动我理解的是程序进程完全没有运行,属于首次运行或在完全杀死进程后点击进行打开的启动操作。不过这些自动化工具和压测工具我也是才接触,学习中,后面有了学习成果后,再来更新吧!好了,在了解到移动端的特性之后,我们来梳理下关于他的测试方面有哪些。:逐步增加并发用户数,观察系统性能拐点(如响应时间超过 5 秒)。1.身份验证:密码强度、验证码有效性、会话超时机制;与冷启动相反,热启动指程序进程已经运行,后台运行。:CPU 利用率、内存占用、吞吐量、延迟时间等。1.不同的安装方式:官网、应用商店、下载地址。

2403_89274016的博客 1369

KrillinAI移动端适配方案

随着短视频平台的爆发式增长,越来越多的内容创作者需要在移动设备上快速完成视频翻译和配音工作。然而,现有的AI视频翻译工具大多局限于桌面端,无法满足移动场景下的即时创作需求。KrillinAI作为一款专业的AI视频翻译工具,亟需一套完整的移动端适配方案来解决以下痛点: - ???? **移动创作场景缺失**:创作者无法在手机端直接使用AI翻译功能 - ???? **跨平台体验不一致**:桌面端与移动端功能...

gitblog_00368的博客 827

Odoo移动端开发终极指南:React Native与离线数据同步技术深度解析

Odoo作为全球领先的开源ERP系统,其移动端开发能力一直是企业数字化转型的关键。本文将深入探讨Odoo移动端开发的核心技术,特别是React Native集成与离线数据同步的实现方案。💡 ## 📱 Odoo移动端架构概述 Odoo的移动端架构基于现代化的Web技术栈,采用渐进式Web应用(PWA)技术实现跨平台兼容。系统通过Service Worker实现离线缓存,确保在无网络环境下仍能

gitblog_00136的博客 696

解锁万物互联:物联网移动端开发技术架构与方案全解析

离家后,随时查看家中安防摄像头;(Swift/Kotlin/Java/Objective-C) - 性能最佳,体验最流畅,深度集成系统特性(通知、后台、传感器),适合对性能和交互要求极高的应用。构建成功的物联网移动应用,需要深入理解其特有的分层架构(UI、逻辑、网络、数据、设备集成),在实时通信(MQTT/WebSocket)、安全、跨平台选型、性能优化、离线支持等关键环节做出明智选择和精细设计。清晰管理应用状态(用户登录态、设备列表状态、当前设备状态、UI状态等),确保状态变更可预测、可追踪、易于测试。

Android技术之家 1130

Davinci移动端适配方案:响应式设计与跨平台兼容终极指南

Davinci作为一个开源的大数据可视化平台,其移动端适配方案通过响应式设计和跨平台兼容技术,让用户能够在手机、平板等移动设备上流畅查看和交互数据看板,实现真正的大屏可视化移动办公体验。 ## 为什么需要移动端适配?📱 在移动互联网时代,数据可视化不再局限于桌面端。Davinci的移动端适配方案解决了以下痛点: - **多设备访问需求**:用户需要在不同设备上查看数据 - **触控交互体验

gitblog_00579的博客 811

CherryHQ/cherry-studio移动端:Android/iOS开发指南

在当今快节奏的数字时代,AI助手已成为我们日常工作生活的重要组成部分。然而,现有的桌面AI应用存在一个明显痛点:**无法随时随地访问**。想象一下,当你在地铁上、咖啡馆里或外出旅行时,突然需要查询信息、处理文档或进行翻译,却发现你的AI助手被"困"在桌面电脑中。 Cherry Studio作为一款功能强大的多模型AI桌面客户端,正在积极拓展移动端能力,让AI助手真正实现"随身携带"。本文将深入探...

gitblog_00640的博客 5618

html5移动开发是什么意思,移动端什么意思?

移动端全称移动互联网终端,是指通过无线网络技术上网接入互联网的终端设备,主要功能是移动上网,因此十分依赖于各种网络。其优点是足够用、性价比高。在移动互联网时代,终端成为移动互联网发展的重点之一。围绕移动互联网发展的需求,移动互联网时代终端的发展呈现出3个明显的发展趋势,一是紧紧围绕用户需求,为用户提供全方位的服务和体验,趋向终端与服务一体化;二是实现终端多样化;三是代表着3G竞合时代终端融合的必然...

weixin_42503415的博客 1865
上一篇: 跨平台移动开发实战(八)------移动客户端网络通信
下一篇: phonegap源码分析(三)------ IOS
cutesource
博客等级 码龄17年 5041粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值