写点什么

MDC Android 专场:账户同步备份框架与 Web&Native 混合开发

  • 2012-09-01
  • 本文字数:2338 字

    阅读完需:约 8 分钟

8 月 25-26 日,首届 MDC移动开发者大会在京召开,此次大会吸引了来自 iOS、Android 以及 Windows Phone 领域的开发和实践者参与,在 Android 分论坛上,点心架构师梁泉、盛大乐众 ROM 架构师郭振、58 同城客户端项目负责人张炎、点心架构师唐才林、豌豆荚百宝袋项目技术负责人高雄以及优酷高级开发工程师严佳分别到场做了主题演讲。本文结合活动实况及嘉宾演讲幻灯片对本次活动进行总结,希望能够让读者对本次活动以及移动开发有更全面的了解。

演讲一:郭振,Android 账户同步备份机制(点击下载演讲资料

设计账号同步备份软件的目的在于不希望重复输入,从而有效降低终端用户的使用成本。在设计盛大的产品时,主要考虑到了以下几点功能需求:

  • 设计盛大服务统一入口:盛大账户,共享登陆成果
  • 将通讯录和日历信息同步到服务器上
  • 将通话记录,短信,系统设置等信息备份到存储卡

稍后郭振介绍了 PIM 同步设计:同步服务器、协议以及客户端等数据。由此引申出了同步管理框架:

  • 处理基于账户的信息同步
  • 只负责调度控制各同步流程,具体协议,服务,操作各 App 自行开发
  • Gmail 的通讯录,Calendar 同步,FaceBook 自动更新

基于账户管理和 PIM 信息同步服务,Framework 提供了 Sync 框架,Sync 框架的主要结构如下:

图 1.1 Sync 框架结构图

如上图所示,通过一个队列管理各种应用发起的同步操作,通过 AlarmManager 控制队列中的各同步操作何时进行,通过 SyncStorageEngine 记录同步时连接服务器所需的认证信息,并且记录同步的状态,由于各应用同步操作的实现是不同的,因此具体 Sync 需要 App 自行实现。

接下来郭振还分享了 Google 数据备份的设计:

图 2.1 Google 数据备份设计

在备份过程中(应用程序可发起请求),Android 的备份管理器(BackupManager)将查找应用程序中需备份的数据,并把数据交给备份传输器,传输器再把数据传送给云存储。在恢复时,备份管理器从备份传输器取回备份数据并将其返回给应用程序,然后应用程序就能把数据恢复到设备上。

应用程序也能够发起恢复请求,但不是必须的——如果程序安装完毕且存在用户相关的备份数据,Android 会自动执行恢复操作。恢复备份数据主要发生于以下场合:用户重置设备或者升级到新设备后,以前装过的应用程序又被再次安装。

备份传输器是 Android 备份框架的客户端组件,它可由设备制造商和提供商定制。备份传输器可以因设备不同而不同,对于应用程序而言它是透明的。备份管理器的 API 将应用程序和实际备份传输器联接起来——程序通过一组固定的 API 与备份管理器进行通讯,而不必关心底层的传输过程。

为了备份应用程序数据,需要实现一个备份代理。此备份代理将被备份管理器调用,用于提供所需备份的数据。当程序重装时,还要调用此代理来恢复数据。备份管理器处理所有与云存储之间的数据传输工作(利用备份传输器),备份代理则负责所有对设备上数据的处理。

演讲二:张炎,大话 Web&Native 混合开发(点击下载演讲资料

张炎的分享主要分为 3 个部分:Web 或 Native 的选型,Hybrid 技术实现以及 Hybrid 经验分享。首先对比了 Web 和 Native 型应用的适用场景:

Web App:

  • 运行于设备浏览器上,故可实现到处运行
  • 无标准的 SDK,可根据需要任意选择
  • 通过前端技术开发,如 HTML、CSS、JavaScript 以及 PHP、Python 等后端开发语言

Native App:

  • 针对某一特定系统,有标准的 SDK,做跨平台移植较困难
  • 主要利用 HttpClient、Socket 等与服务端通信
  • 利用系统底层支持和框架层提供对应用层的支持

基于以上的对比,Native App 具有较强的动画处理能力,运行速度快,迭代成本高,较强的调用本地功能等特点;对于 Web App 来说,则具备移植性强,入门快,开发周期短,数据同步能力强等特点。

为了解决交互复杂、迭代频繁以及数据更新快等问题,混合式应用(Hybrid App)应运而生。通过 addJavascriptInterface(将一个 Java 对象绑定到一个 JavaScript 对象中)方法可实现 Web 对 Native 的调用,Native 对 Web 侧的调用则通过 loadUrl 方法实现。在最后,针对开发中一些问题,张炎分享了自己的经验:

  • 取消 Webview 长按出现文字复制框
    • 重写 Webview 的 performLongClick(),让其方法体为空;
  • Android 系统如何加载图片
    • 将默认占位符图片放在内容中,只加载一个;
    • 将图片的 URL 保存在自定义属性中,js 执行加载首屏图片;
    • 滑动页面时遍历所有图片是否在可视区域,加载显示可视区域图片;
    • 页面加载完后等待一段时间,达到异步;
  • 如何处理加载失败
    • PageStart 记录 url,每次 load 比较参数 url 和记录的 url,一致即为错误,将 webview 隐藏;
    • receive error 时调用 webview.clearView;
    • 重试加载时,在 loadResource 中让 webview 显示;
  • 如何处理加载超时
    • Webview 本身没有提供处理超时的方法,但是可以利用计算时间来处理超时;
    • Webview.postDelayed(new Runnable(),long);
    • mHandler.sendMessageDelayed(message,long)
  • 如何从 web 端获取 cookie 或 header
    • 混合模式下开发客户端,web 需要获取 native 设备的信息,以备后端统计监控使用。Android2.2 以上支持传递 header, 但是 ajax 内部请求不能获取 header,所以采用 cookie 方式。
  • 何时消失 loading 框
    • Webviewchromeclient.onProgressChanged;
    • 页面 onDomReady 后通知 native 关闭加载框

会后一些网友在新浪微博分享了他们参会的感受:

BBJamer :今天下午的安卓专场来个 150 多人。大家对黑莓可以转化安卓的应用都很感兴趣。结实了北京的两个重要的 Android 社区的负责人。再次感谢活动的组织方和大家的支持,预祝下周末的上海分场活动成功。

杨小龙 _ 北京:同步到云端安全问题感觉很堪忧,对内部开发人员相当与完全暴露 _。_

本次移动开发者大会北京站活动圆满结束,9 月 1 日至 2 日,上海站活动也已经展开,欢迎了解详细议程 @InfoQ 还将继续关注并报道相关新闻。

2012-09-01 03:271983
用户头像

发布了 156 篇内容, 共 51.5 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

Java培训如何选择靠谱

小谷哥

推荐一款支持数据 + 代码生成的开发工具!yyds

了不起的程序猿

Java 程序员 工具

MySync——企点通用MySQL数据同步解决方案

腾讯企点技术团队

MySQL 数据库 日志 Binlog 同步

嵌入式操作系统多任务调度原理分析与RUST参考实现

Geek_0185b7

好书推荐|《产业数字化转型精要:方法与实践》

李洋

职业 数字化转型 数字经济 书籍 CIO的秘密武器

LP双币质押流动性挖矿dapp系统开发逻辑分析

开发微hkkf5566

百度APP Android包体积优化实践(一)总览

百度Geek说

Java 安卓

SAP 实施项目中涉及到编程方式操作 Excel 的几种场景介绍

汪子熙

Excel automation SAP abap 7月月更

学习web前端开发有哪些好的方法

小谷哥

编程技巧│超实用 nginx 中常见的配置合集

nginx 运维 经验分享 7月月更

一文了解 Nebula Graph 上的 Spark 项目

NebulaGraph

spark 图数据库 知识图谱 NebulaGraph

小程序技术解决桌面应用敏捷迭代的一种思路

Speedoooo

小程序 移动开发 小程序容器 桌面应用

web前端开发技术就业前景怎么样

小谷哥

直播预告 | 多云时代如何建设企业云管理平台?

BoCloud博云

cmp 云管理平台 云管理

LabView---信号发生器

一碗黄豆酱

低代码软件开发平台怎么选?

优秀

低代码开发 低代码平台

云原生、Intel Arch及云原生机密计算 3 大 SIG 在线分享!今天见 | 第 32-34 期

OpenAnolis小助手

开源 云原生 虚拟化 龙蜥大讲堂 SIG双周会

云原生(七) | Docker篇之深入Docker Compose

Lansonli

云原生 7月月更

大数据入门学习指南

Lansonli

大数据 7月月更 大数据基础 大数据基础知识 大数据核心

LabView实验——温度检测系统(实验学习版)

一碗黄豆酱

服务器运维需要24小时在线吗?需要周末加班吗?

行云管家

服务器 IT运维

怎么选择好的web前端开发培训课程

小谷哥

JS class 并不只是简单的语法糖!

掘金安东尼

JavaScript 前端 设计模式 7月月更

LabView中禁用模块(属性节点)

一碗黄豆酱

小李:“有没有特别简单的Python解密rsa的案例?”“还真有”

梦想橡皮擦

Python 爬虫 7月月更

函数递归习题(easy版)

芒果酱

c++ C语言 7月月更

SDL文字显示

柒号华仔

7月月更

IT小白也能轻松get日志服务---使用Nginx模式采集日志

云端explorer

nginx 运维 日志服务

性能领域:你知道的越多,不知道的也就越多

博文视点Broadview

DevOps 实践多年,最痛的居然是?

SoFlu软件机器人

大数据培训机构怎么选?

小谷哥

MDC Android专场:账户同步备份框架与Web&Native混合开发_JavaScript_贾国清_InfoQ精选文章