内容字号:默认大号超大号

段落设置:取消段首缩进段首缩进

字体设置:切换到微软雅黑切换到宋体

业界资讯 软件之家
Win10之家 WP之家
iPhone之家 iPad之家
安卓之家 数码之家
评测中心 智能设备
精准搜索请尝试:精确搜索

Google公布I/O 2017 for Android源代码

2017-9-8 10:05:38来源:搜狐科技作者:谷歌开发者责编:弥尘评论:

近日,谷歌公布了官方 Google I/O 2017 for Android 应用的源代码。

谷歌官方表示,今年的应用对现有功能做出了实质性的修改,同时增加了几项新功能。它还扩展了技术栈,以便可以利用Firebase。谷歌重点介绍了该应用的几个显著改变以及它们的设计考虑。

2017版最突出的一项新功能是会议预订系统,该系统旨在帮助节省现场参会者的时间并提供简洁顺畅的会议体验。注册的参会者可在会前或大会期间预订会议并加入等待列表;预订可以快速进入会场,而不必排上漫长的队伍。预订数据与参会者的大会胸卡同步,这样,会议工作人员可以使用启用NFC的手机核实预订数据。预订功能不仅大受欢迎,预订数据也帮助会议工作人员在I/O会前或大会期间改变会议室大小,以适应实际的座位需求。

此预订功能是使用Firebase Realtime Database (RTDB)和Cloud Functions for Firebase来实现的。RTDB可在不同用户设备之间轻松同步,我们只需要在代码中实现一个侦听器来接收数据库更新。RTDB还提供开箱即用的离线支持,即使是在旅行期间网络连接断断续续时,也能获取会议数据。一个云函数在后台处理用户的预订请求,使用事务来确保状态的正确性(防止顽皮的用户预订太多座位!)并与会议胸卡系统通信。

在往届大会中,我们使用ContentProvider作为所有应用数据之上的抽象层,这意味着,我们必须确定如何将RTDB数据集成到ContentProvider。我们需要在两个本地数据缓存方案之间权衡考虑:

1) 通过ContentProvider访问的现存本地SQLite数据库,

2) RTDB创建的本地缓存,用于支持离线访问。我们决定将所有应用数据集成到ContentProvider中:一旦RTDB中更改了用户的预订数据,我们即会更新ContentProvider,使之始终成为应用数据的单一可信来源。这意味着,我们需要只在Session Detail Activity这个屏幕中保持对RTDB的开放连接,在这里,用户可以主动管理他们的预订。在应用的其他部分显示的预订数据由ContentProvider提供支持。在离线模式下,或者如果到RTDB的连接断断续续或者延时严重,我们只需从ContentProvider获取用户预订数据的最近已知状态。

我们还必须设计出好的方案,将RTDB集成到整个IOSched同步逻辑中,尤其是由于RTDB提供的同步模型与我们之前在该应用中使用的先ping再fetch的方法大不相同。我们决定继续使用Cloud Endpoints在各个设备之间同步用户数据并与网络和iOS客户端同步(数据本身存储在数据存储区中)。

尽管RTDB提供开箱即用的数据同步功能,我们还是希望确保用户的预订数据在所有设备上都是最新的,即使应用未在前台运行。我们使用一个云函数将RTDB预订数据集成到同步流中:一旦RTDB中更改了用户的预订数据,该函数即会更新端点,而这会触发向所有用户设备发送一个Firebase云消息传递下行消息,随后即会计划数据同步。

今年的应用还提供了一个资讯流的功能,向用户每小时通报I/O上的进展动态(该应用的大多数用户都在远程,资讯流是他们了解大会的窗口)。资讯流也由RTDB驱动,通过简单的CMS将数据推送到服务器。我们使用一个云函数来监控RTDB资讯流数据,当在服务器上更新资讯流数据时,该函数将向客户端发送一个云消息传递下行消息,后者会以视觉形式通知用户存在新的资讯流项目。

在2015年和2016年,我们一直采用MVP架构的IOSched,今年,我们继续使用该架构。这种架构很好地分离了关注问题,方便测试,并且总体上使我们的代码更整齐,更易于维护。对于资讯流功能,受到Android架构蓝图的启发(https://github.com/googlesamples/android-architecture),我们决定试验一种更轻量级的MVP实现方法,该方法提供必要的模块化,同时又非常容易概念化。其目标兼具教育性和实践性:我们希望为开发者示范一种备用的MVP模式;我们还希望展示一种适合我们对此功能的需求的架构。

IOSched首次大量使用了Firebase Remote Config。在过去,我们发现自己无法在大会之前或大会期间通知用户非会议数据的更改:WiFi信息、巴士时刻表、拼车折扣代码等。强制应用更新并不可行;我们只希望更新应用内的默认值。使用远程配置可以轻松解决我们的这个问题。

最后,我们设计出一套三层系统,用于通知用户上述更改:

通过云消息传递和数据同步(先ping再fetch模型)传达大会数据和用户数据更改。

资讯流数据更改通过RTDB进行控制。

对应用内常量的更改通过远程配置进行控制。

未来计划

尽管我们公布了2017年代码,未来几个月我们仍有工作要做。我们将要更新代码,以遵循后台处理的现代模式(并使我们的应用兼容“O”),未来,我们将采用Android的架构组件来简化应用的总体设计。开发者可以在GitHub上跟踪此代码的更改情况:点此查阅

相关文章

关键词:谷歌Google

IT之家,软媒旗下科技门户网站 - 爱科技,爱这里。

Copyright (C) RuanMei.com, All Rights Reserved.

软媒公司 版权所有 鲁ICP备11016544号-10