写点什么

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:272455
用户头像

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

关注

评论

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

基础+缓存雪崩+哨兵+集群+Reids场景设计,经验分享

Java 程序员 后端

张宏江出席HICOOL 2021全球创业者峰会,阐述AI研究与创业新机遇

硬科技星球

人工智能 大模型时代 悟道2.0

突击 22 天面进腾讯,给到 32K*14 薪!全靠这份阿里面试参考指南了

Java 程序员 架构 面试 计算机

一年数十万次实验背后的架构与数据科学

百度开发者中心

人工智能 架构 最佳实践 方法论 数据科学

如何让项目准时上线 - 续篇

石云升

项目管理 管理 引航计划 内容合集 9月日更

和阿里大牛的技术面谈,springcloud面试题汇集与答案

Java 程序员 后端

爬虫初探: 一次爬虫的编写尝试

程序员架构进阶

实战问题 个人思考 9月日更 spider 搜索结果

Alibaba内部713页Java程序性能优化实战手册首次开放!大受好评

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

中国移动5G消息开发者社区第三期直播课堂圆满结束,直播回放已上线社区!

5G消息

译介:《组装一台电脑9:精简》

姬翔

9月日更

和腾讯大佬的技术面谈,BTAJ面试有关散列(哈希)表的面试题详解

Java 程序员 后端

什么?分布式事务现在不是都在用么?你还不会?

Java 架构 分布式 后端 计算机

和阿里大牛的技术面谈,字节跳动Java实习面试凉凉经

Java 程序员 后端

Alibaba最新发布:2021最符合Java程序员的“学习路线”

Java架构师迁哥

NoSQL数据库——Cassandra

hanaper

上云迁移之路,如何选择适合方式?

云计算

和腾讯大牛的技术面谈,分布式系统中ACID和CAP有什么区别

Java 程序员 后端

为抢人才,字节架构师竟将42W字「2021大厂真题集」,上传GitHub

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

OceanBase 源码解读(四):事务的一生

OceanBase 数据库

数据开发 oceanbase OceanBase 开源 OceanBase 社区版 OceanBase 数据库大赛

吊打面试官必备-阿里内部性能优化实战手册

Java架构师迁哥

史诗级放水…字节3-2大牛分享350道Java岗真题,刷完获阿里offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

IT大厂八股文更新上线的操作系统,刚上线点击量破百万!赶紧收藏

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

智慧物流可视化,能否解决购物节后的爆仓危机?

ThingJS数字孪生引擎

大前端 物联网 可视化 智慧物流 数字孪生

要不要换种方式开发软件?

鲸品堂

软件开发

阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路

JackJiang

架构 即时通讯 IM

MDEX市值机器人系统开发功能介绍

量化系统19942438797

交易所 市值机器人 MDEX

字节内部进阶用的Java中高级岗技术图谱到底泄露了,和开源没区别

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

非科班杀进字节跳动,全靠GitHub公认最强的数据结构与算法笔记

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

分布式事务内存数据库--MemDB

hanaper

自定义View笔记

Changing Lin

9月日更

和阿里大牛的技术面谈,金三银四旗开得胜

Java 程序员 后端

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